正则表达式匹配关键字之前第一次出现的情况

标签 regex replace match find-occurrences

我有以下字符串:

<ul><li><span>some words here.</span></li><li><span>other words here.</span></li><li><span>Code: 55555.</span></li></ul>

我的目标是从字符串中删除这部分,即包含“code”关键字的 li 标签集:

<li><span>Code: 55555.</span></li>

我正在尝试编写一个正则表达式来帮助我匹配和替换我的子字符串。 之间的文本 <li></li>可能会有所不同,但它始终具有关键字“Code”。这是我到目前为止所拥有的:

<li>(.*)code:(.*?)<\/li>

问题是,它从第一个 <li> 开始匹配标签,我希望它从 <li> 开始匹配标签位于关键字“code”之前。

感谢您的帮助!

最佳答案

<li>(?:.(?!</li>))+Code:(?:.*?)</li>

  • 匹配 <li>从字面上看
  • 后跟任意数量的字符,其中文字 </li>不匹配(这确保匹配仅在相关的 <li> 处开始)
  • 后跟文字 Code:
  • 后跟任意数量的字符(非贪婪),直到文字 </li>已匹配

Demo

关于正则表达式匹配关键字之前第一次出现的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36056219/

相关文章:

mysql - 从 bash 获取特定文件名

regex - Perl 正则表达式替换最后一个匹配的字符串

java - 正则表达式以任何随机顺序完全匹配单词的字符,没有重复的字符

string - 如何进一步处理匹配字符串?

SQL - 比较来自两个表的字符串(模糊匹配......排序)

php - 正则表达式中的数字范围

java - 如何使用 ColdFusion 替换 HTML 中的文本而不替换 HTML 标签?

mysql - 替换 MySQL Select 查询中的部分列值

delphi - StringReplace 无法替换字符串的所有实例

java - 格式化字符串: To remove the telephone number