具有独立组的RegEx
本文关键字:RegEx 独立 | 更新日期: 2023-09-27 18:01:48
我有RegEx下面查找预定义的html标签和它们的属性,如src|href|action。它包含像这样解析字符串的组
:解析字符串<a data-mydata href="myUrl"></a>
提取组:[0] {<a data-mydata href="myUrl">}
[1] {}
[2] {<a data-mydata href="}
[3] {myUrl}
[4] {">}
[5] {} //<- Empty result, the data-mydata is not read
正则表达式:
(?<pre><(?:script|img|a|area|link|base|input|frame|iframe|form)''b.*?(?:src|href|action)''s*=''s*['"']''s*)(?<url>.+?)(?<post>''s*['"'][^>]*?>)|(?<data>(data-mydata))
问题是,我想检查属性data-mydata
,但group 5
返回空结果{}
。data-mydata
属性是可选的,但我需要知道data-mydata
是否存在。
当你有一个匹配,你可以检索组5,看看它是否成功
match.Groups[5].Success
或命名
match.Groups["data"].Success
还要确保前一组不贪婪地匹配结束标记(),添加?到组的末尾所以它在开始标签
的末尾停止(?<tag><a's(?<data>data-mydata)?)?.*(?<end><'/a>)
这可以匹配其中的3个组,注意一个组嵌套在另一个组中作为可选的匹配(?)
<a data-mydata href="myUrl"></a>
与
tag [0-15] `<a data-mydata `
data [3-15] `data-mydata `
end [28-32] `</a>`
和
<a href="myUrl"></a>
与
tag [0-3] `<a `
end [16-20] `</a>`