正则表达式首先出现在单词之前

时间:2017-11-29 12:06:54

标签: regex preg-match

我有以下字符串:

:</w:t></w:r>xxxxxxxuyyyyyzzzzz:</w:t></w:r>xxxxuuuxxxyyyyyzzzzzsomemoney

我的目标是删除字符串标记,找到第一个&#39;:&#39;在somemoney这个词之前

:</w:t></w:r>xxxxuuuxxxyyyyyzzzzzsomemoney

但我只能得到这个

:r>xxxxuuuxxxyyyyyzzzzzsomemoney

我使用以下表达式

~:(?:.(?!:))+somemoney~

有人可以帮助我,链接测试:https://regex101.com/r/ibfY8s/1

1 个答案:

答案 0 :(得分:0)

如果您的代码与示例中的代码一样简单,则可以使用

执行此操作
:(?:<[^>]*>|[^:])*somemoney

这匹配冒号后跟两个替换中的一个,直到魔术词

是替换
  1. 起始<后跟任何字符(但>),直到结束>,最后是结束>
  2. 任何字符,但冒号(:)。
  3. 交替可以重复多次。

    第一次更改将“吃掉”标签内容,因此不会对[^:]进行测试。

    Your modified regex101 example

    注意!如果您的代码可以包含可以包含字符串的参数(例如HTML标记),则会使非常更加复杂。