我有正则表达式:
@"<img\s*[^>]*>(?:\s*?</img>)?
有人可以解释这一部分:(?:\ s *?)?
那是什么?答案 0 :(得分:9)
匹配但不捕获任意数量的空格,后跟一个关闭图像标记,零次或一次:
(?: = match but don't capture
\s*? = any number of whitespace (not greedy)
</img> = close image tag
)? = zero or one times
:)
答案 1 :(得分:1)
(?:\s*?)
选择图像标记之后的任何空格(如果存在)。开头的?:
告诉正则表达式引擎不捕获该组(意味着它不会在匹配数组中返回)
答案 2 :(得分:0)
任意数量的空白字符的非捕获组,后跟关闭的img标记
答案 3 :(得分:0)
整个表达式将捕获具有相应<img>
标记的任何</img>
标记(但不会捕获关闭标记)。它不捕获close标签,因为(?:)
语法意味着“匹配但不捕获”。
这个正则表达式的一些限制:
\s*
是多余的,因为[^>]*
也会捕获此内容一些例子:
<img>
将不匹配<img></img>
将匹配,但仅捕获<img>
<img attr="123"></img>
将匹配,但仅捕获<img attr="123">
<imgabc></img>
将不匹配<img> </img>
将匹配,但仅捕获<img>
<img>ab</img>
将不匹配我强烈推荐使用www.radsoftware.com.au免费提供的正则表达式设计器来测试正则表达式