修改现有正则表达式以检索索引

时间:2014-12-10 13:20:37

标签: html regex excel-vba vba excel

我有一个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-->]?"

如果有人可以帮我解决这个问题。

1 个答案:

答案 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-->))?

如果你能使它工作,第一个是更好的。