正则表达式匹配关键字之前的第一次出现
RegEx match first occurrence before keyword
我有以下字符串:
<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>
我正在尝试编写一个 RegEx 来帮助我匹配和替换我的子字符串。
<li></li>
之间的文本可能会有所不同,但它始终具有关键字 "Code"。这是我目前所拥有的:
<li>(.*)code:(.*?)<\/li>
问题是,它从第一个 <li>
标签匹配,我希望它从 <li>
标签开始匹配,该标签就在我们的关键字 "code".[=16 之前=]
感谢您的帮助!
<li>(?:.(?!</li>))+Code:(?:.*?)</li>
- 逐字匹配
<li>
- 后跟文字
</li>
不匹配的任意数量的字符(这确保匹配仅从相关的 <li>
开始)
- 后跟文字
Code:
- 后跟任意数量的字符(非贪婪),直到匹配文字
</li>
您可以为此尝试使用正则表达式组,因此您的正则表达式将是这样的:
r'(<\li>(.*)代码:(.*?)){1,}'
此正则表达式将匹配超过 1 次出现的格式为 <\li>(.*)code:(.*?) 的字符串。
我想这可能会对你有所帮助。
(.*)(<li>.*span.*<\/li>)(.*)
Tim Biegeleisen 提供的 RegEx 工作正常。如果你想确保单词 "Code" 存在,只需将 'span' 替换为 'Code',如:
(.*)(<li>.*Code.*<\/li>)(.*)
[a-z|A-Z][Cc]模式:[0-9|.]+[a-z|A-Z]
这里关键字 "Code" 在正则表达式中是强制性的
我有以下字符串:
<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>
我正在尝试编写一个 RegEx 来帮助我匹配和替换我的子字符串。
<li></li>
之间的文本可能会有所不同,但它始终具有关键字 "Code"。这是我目前所拥有的:
<li>(.*)code:(.*?)<\/li>
问题是,它从第一个 <li>
标签匹配,我希望它从 <li>
标签开始匹配,该标签就在我们的关键字 "code".[=16 之前=]
感谢您的帮助!
<li>(?:.(?!</li>))+Code:(?:.*?)</li>
- 逐字匹配
<li>
- 后跟文字
</li>
不匹配的任意数量的字符(这确保匹配仅从相关的<li>
开始) - 后跟文字
Code:
- 后跟任意数量的字符(非贪婪),直到匹配文字
</li>
您可以为此尝试使用正则表达式组,因此您的正则表达式将是这样的:
r'(<\li>(.*)代码:(.*?)){1,}'
此正则表达式将匹配超过 1 次出现的格式为 <\li>(.*)code:(.*?) 的字符串。
我想这可能会对你有所帮助。
(.*)(<li>.*span.*<\/li>)(.*)
Tim Biegeleisen 提供的 RegEx 工作正常。如果你想确保单词 "Code" 存在,只需将 'span' 替换为 'Code',如:
(.*)(<li>.*Code.*<\/li>)(.*)
这里关键字 "Code" 在正则表达式中是强制性的