【发布时间】:2013-05-29 13:21:39
【问题描述】:
请有人帮我理解这个用于匹配 HTML 中 img 标记的 src 属性的正则表达式吗?
src=(?:(['""])(?<src>(?:(?!\1).)*)\1|(?<src>[^\s>]+))
src= this is easy
(?:(['""])(?<src>(?:(?!\1).)*) ?: is unknown (['""]) matches either single or double quotes, followed by a named group "src" that matches unknown strings
\1 unknown
| "or"
(?<src>[^\s>]+)) named group "src" matches one or more of line start or whitespace
简而言之,?: 是什么意思?
所以(?:...) 是常规括号的非捕获版本。匹配括号内的任何正则表达式,但组匹配的子字符串在执行匹配后无法检索或稍后在模式中引用。
谢谢@mbratch
\1 是什么意思?
最后,感叹号在这里有什么特殊意义吗? (否定?)
【问题讨论】:
-
你在理解什么方面有困难?
-
没关系。用正则表达式本身解析html是错误的
-
用正则表达式解析单个标签的内部实际上可能没问题
-
我没有用正则表达式解析 html!