正则表达式 。*?如果在匹配的字符

时间:2017-12-10 01:35:09

标签: regex string

我只是尝试使用正则表达式从此xml标记中获取所有属性。

<img src="data:image/jpeg;base64,somthing=" width="280" height="186" >

我目前正在使用[^ ]*[ ]*=[ ]*\".*?\",它匹配任何内容,然后是一个或零空格,然后是一个eqaul符号,然后是一个或零空格,然后是双引号,然后找到下一个双引号。

问题是如果有等号,则跳过双引号 enter image description here

如果最后没有等号,一切正常。我在哪里错过了?

enter image description here

2 个答案:

答案 0 :(得分:1)

您在尝试捕获一个或零空格([ ]*)时使用*运算符,您想要使用的运算符是&#39;?&#39; [ ]?

作为一个建议,这里我将如何捕获属性是xml标记:

\w+\s?=\s?\".*?\"

编辑:顺便说一下,*运营商会根据需要捕获零个或多个匹配项,而不是零或一个。

答案 1 :(得分:1)

鉴于您的例子,以下正则表达式似乎更直观:(\ S {5,})

使用{5,}就是为了摆脱&lt; img和&gt; 请参阅输出:https://regex101.com/r/Nfj6zr/3