非固定宽度正后视
Posted
技术标签:
【中文标题】非固定宽度正后视【英文标题】:Non-fixed width positive lookbehind 【发布时间】:2018-10-16 11:46:34 【问题描述】:我正在尝试匹配 svg 文件的 svg 标签中的高度字段,看起来像这样(多行):
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg2"
>
这个正则表达式几乎给了我我想要的:
/(<svg[^<>]*[^<>]*>)/ms
我只想匹配高度的浮点值 (1052.36220472),所以前瞻/后视似乎是可行的方法,但我不能使用非固定宽度后视,所以
/(?<=<svg[^<>]*[^<>]*>)/ms
不起作用 - 我能做什么?
我想在 php 中通过 preg_replace() 函数使用 match 进行替换。
【问题讨论】:
使用/(<svg[^<>]*height=")(\d*\.\d*)("[^<>]*>)/
时只需访问第二组值。如果它是用 Swift 编写的,请参阅this post。
它是什么语言或工具?
打算在 php 中使用 preg_replace() 函数,将其添加到帖子中。
使用\K
然后:<svg[^<>]*height="\K[^"]*
当你说'只有浮点值'时,你的意思是小数点后的数字吗?
【参考方案1】:
正如 revo 在 cmets 中提到的(谢谢!),\K
完成了这项工作:
/(?<=<svg[^<>]*[^<>]*>)/ms
将只匹配十进制数字并删除 svg 标记的其余部分。
【讨论】:
以上是关于非固定宽度正后视的主要内容,如果未能解决你的问题,请参考以下文章
css布局1:左右宽度固定中间自适应html布局解决方案(同一侧宽度固定,另一侧自适应)
在 CSS 中,如何获得一个左侧固定宽度的列和一个使用其余宽度的右侧表格?