Im *_*ash 2 html regex notepad++ visual-studio
我在正则表达式方面遇到了一些麻烦。我需要在长 HTML 页面中推断这部分文本:
<li class="menuItem">
<a class="menuItem" href="/site/ContactUs.aspx?section=510">
<span class="posNR">3.
</span>Contact Us<span class="shortDesc"></span><span class="line"></span>
</a>
</li>
Run Code Online (Sandbox Code Playgroud)
另一个问题是我有一些格式如下的字符串:
<li class="menuItem"><a class="menuItem" href="/site/ContactUs.aspx?section=510"><span class="posNR">3.</span>Contact Us<span class="shortDesc"></span><span class="line"></span></a></li>
Run Code Online (Sandbox Code Playgroud)
在其他一些部分我有这个:
<li class="menuItem">
<a class="menuItem" href="/site/ContactUs.aspx?section=510">
<span class="posNR">3.
</span>Contact Us<span class="shortDesc"></span><span class="line"></span></a>
</li>
Run Code Online (Sandbox Code Playgroud)
我想从例如这里提取这个特定部分:
<li class="menuItem">
<a class="menuItem" href="/site/News.aspx?section=316&ViewType=Actual&IdType=316">
<span class="posNR">2.
</span>News<span class="shortDesc"></span><span class="line"></span></a>
asdsdasda </li>
<li class="menuItem">
<a class="menuItem" href="/site/ContactUs.aspx?section=510">
<span class="posNR">3.
</span>Contact Us<span class="shortDesc"></span><span class="line"></span></a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试过一些正则表达式,例如
(<li*[\s\S]*?<\/li>)
Run Code Online (Sandbox Code Playgroud)
我在记事本 ++ 和/或 Visual Studio Code 中使用此正则表达式。
使用这个正则表达式:
(<li(?:(?!<li)[\s\S])*?ContactUs[\s\S]*?<\/li>)
Run Code Online (Sandbox Code Playgroud)
此模式通过调整以[\s\S]不允许<liie来利用调整的贪婪令牌解决方案(?:(?!<li)[\s\S])*。您可以在此处阅读有关它的更多信息以及何时使用它。
<li匹配起始文字<li(?:(?!<li)[\s\S])*?惰性非捕获组,具有负的前瞻能力(?!,确保<li比赛中不存在另一个组。添加此内容是为了与<li... <li... </li>整个内容不匹配,而仅从第二个开始匹配<li>ContactUs匹配文字,因为条件声明ContactUs必须出现在匹配中li[\s\S]*?匹配任何字符(懒惰地)<\/li>匹配结束</li>希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
10538 次 |
| 最近记录: |