我有一个HTML,并且存在很少的索引。样品低于
this is first sample index <!-- @@struct1_s§var1-->19.5.1<!--Index--> and this is required
this is second sample index <!-- @@struct2_s§var2-->19.5.2<!--Index--> - this is extension to the sample index <!-- @@struct3_s§var3-->19.5.3<!--Index--> and this is required.
我使用正则表达式
"<!--\s?@{2}[\.\w]*§[\.\w\[.\]]+-->[\d]+\.[\d]+\.[\d]+<!--Index-->"
所以,如果我解析上面的html部分,我会得到匹配的
<!-- @@struct1_s§var1-->19.5.1<!--Index-->
<!-- @@struct2_s§var2-->19.5.2<!--Index-->
<!-- @@struct3_s§var3-->19.5.3<!--Index-->
现在我想改变我的正则表达式,如果存在的话 - 我想要检索整个索引
因此,如果我解析html的上述部分,我应该得到匹配的
<!-- @@struct1_s§var1-->19.5.1<!--Index-->
<!-- @@struct2_s§var2-->19.5.2<!--Index--> - <!-- @@struct3_s§var3-->19.5.3<!--Index-->
我正在尝试使用此表达式,但它也会检索同一行中存在的其他字符
regEx.Pattern = "<!--\s?@{2}[\.\w]*§[\.\w\[.\]]+-->[\d]+\.[\d]+\.[\d]+<!--Index-->[-\s?]?[<!--\s?@{2}[\.\w]*§[\.\w\[.\]]+-->[\d]+\.[\d]+\.[\d]+<!--Index-->]?"
如果有人可以帮我解决这个问题。
答案 0 :(得分:0)
更简单的版本可以在三场比赛中完成;它可以满足您对上述测试用例的需求:
<!--\s?@{2}[\.\w]*§[\.\w\[.\]]+-->\d+\.\d+\.\d+<!--Index-->( - )?
你可以在两场比赛中做你想做的事情,但是你必须比你想要的更多,然后使用第一和第二个捕捉组来获得你想要的匹配部分(通常是$ 1和$ 2)。
(<!--\s?@{2}[\.\w]*§[\.\w\[.\]]+-->\d+\.\d+\.\d+<!--Index-->(?: - )?)(?:.*(<!--\s?@{2}[\.\w]*§[\.\w\[.\]]+-->\d+\.\d+\.\d+<!--Index-->))?
如果你能使它工作,第一个是更好的。