正则表达式在单词之前第一次出现
regex first occurrence before word
我有以下字符串:
:</w:t></w:r>xxxxxxxuyyyyyzzzzz:</w:t></w:r>xxxxuuuxxxyyyyyzzzzzsomemoney
我的目标是删除字符串的标签,找到单词 somemoney
之前的第一个 ':' 像这样
:</w:t></w:r>xxxxuuuxxxyyyyyzzzzzsomemoney
但我只得到这个
:r>xxxxuuuxxxyyyyyzzzzzsomemoney
我正在使用以下表达式
~:(?:.(?!:))+somemoney~
有人可以帮助我,link 测试:https://regex101.com/r/ibfY8s/1
如果您的标签与您的示例一样简单,您可以使用
:(?:<[^>]*>|[^:])*somemoney
这匹配一个冒号后跟两个交替之一,直到 魔术字 。交替是
- a 开始
<
后跟任何字符(但 >
)直到结束 >
,最后是结束 >
.
- 除冒号外的任何字符 (
:
)。
交替可以重复任意次数。
第一次交替将 "eat" 标签内容,因此未针对 [^:]
.
进行测试
Your modified regex101 example.
注意! 如果您的标签可以包含可以包含字符串的参数(例如 HTML-标签),这会变得 very 复杂得多。
我有以下字符串:
:</w:t></w:r>xxxxxxxuyyyyyzzzzz:</w:t></w:r>xxxxuuuxxxyyyyyzzzzzsomemoney
我的目标是删除字符串的标签,找到单词 somemoney
之前的第一个 ':' 像这样
:</w:t></w:r>xxxxuuuxxxyyyyyzzzzzsomemoney
但我只得到这个
:r>xxxxuuuxxxyyyyyzzzzzsomemoney
我正在使用以下表达式
~:(?:.(?!:))+somemoney~
有人可以帮助我,link 测试:https://regex101.com/r/ibfY8s/1
如果您的标签与您的示例一样简单,您可以使用
:(?:<[^>]*>|[^:])*somemoney
这匹配一个冒号后跟两个交替之一,直到 魔术字 。交替是
- a 开始
<
后跟任何字符(但>
)直到结束>
,最后是结束>
. - 除冒号外的任何字符 (
:
)。
交替可以重复任意次数。
第一次交替将 "eat" 标签内容,因此未针对 [^:]
.
Your modified regex101 example.
注意! 如果您的标签可以包含可以包含字符串的参数(例如 HTML-标签),这会变得 very 复杂得多。