正则表达式:从 html 标记中选择圆括号之前一行的所有内容

正则表达式:从 html 标记中选择圆括号之前一行的所有内容

我有这 3 个 html 标签,我想选择圆括号之前一行的所有内容:

<li><a href="page-1.html" title="Page 1">Page 1 (22)</a></li>
<li><a href="page-2.html" title="Page 2">Page 2 (18)</a></li>
<li><a href="page-3.html" title="Page 3">Page 3 (23)</a></li>

因此,输出应该是:

(22)</a></li>
(18)</a></li>
(23)</a></li>

我的正则表达式解决方案是:

寻找:(?s)(<li><a href=.*?)(\()

问题是我的正则表达式也选择了左括号。

答案1

对于这样的工作,展望是你的朋友:

  • Ctrl+H
  • 找什么:<li><a href=.*?(?=\()
  • 用。。。来代替:LEAVE EMPTY
  • 查看 相符
  • 查看 环绕
  • 查看 正则表达式
  • 查看 . matches newline
  • Replace all

解释:

<li><a href=        # literally
.*?                 # 0 or more any character
(?=\()              # positive lookahead, make sure we have an opening parenthesis after

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

答案2

搜索: (?s)(<li><a href=.*?)(\()

替换为:\2

相关内容