Regex 正则表达式应该匹配链接文本和未链接文本
我有一个正则表达式:Regex 正则表达式应该匹配链接文本和未链接文本,regex,Regex,我有一个正则表达式: <li><i>(?:<a.*?>)?(.*)(?:<.*?>)?</i></li> (?) 或者不带标记,如下所示: <li><i>42nd Street</i></li> 第42街 没有标记,正则表达式工作得很好,问题是,在第一个示例中,我得到了以下匹配: Hi there</a> 你好 我读过关于用(?:regex)忽略分组的文
<li><i>(?:<a.*?>)?(.*)(?:<.*?>)?</i></li>
(?)
或者不带
标记,如下所示:
<li><i>42nd Street</i></li>
第42街
没有
标记,正则表达式工作得很好,问题是,在第一个示例中,我得到了以下匹配:
Hi there</a>
你好
我读过关于用(?:regex)
忽略分组的文章,但我不知道为什么它坚持要包含结束
标记,什么regex会忽略结束
标记,所以我只会在那里得到Hi?你捕获的(.*)
是贪婪的,而(?:)?
之后,它是可选的,因此(.*)
将始终包含
。要解决此问题,请将*
更改为*?
,使其为惰性(匹配尽可能少的字符:
<li><i>(?:<a.*?>)?(.*?)(?:<.*?>)?</i></li>
(?:谢谢。我正在解析一些我知道不会改变的非常特定的HTML。
<li><i>(?:<a.*?>)?(.*?)(?:<.*?>)?</i></li>