如何使用正则表达式录制单个字符?或者:我可以根据不使用的正则表达式部分检测字符串吗?

时间:2014-10-04 16:08:24

标签: regex

这个头衔的后半部分是火车残骸,对不起。

我知道有一些正则表达式功能可以做我正在考虑的事情,但我无法解决或记住它是什么。

我想要检测pizza之前 <{1}}字符的所有{实例,以便我可以用kale替换它们。

到目前为止,我的解决方案是搜索/[^{]pizza/。但是有一个问题。这会将tpizza替换为kale,删除前面提到的字符。我不希望这样,主要是因为它杀死了前面的空格。

所以我的假设解决方案是:

  1. 找到一种方法来搜索“前面有任何非{字符的披萨”而没有“非{字符”是正则表达式“被”抓住的一部分本身,或

  2. 找到一种方法来记录前面的字符,以便我可以在替换字符串中使用它。

  3. 不幸的是我不知道我是怎么做的。有人可以提供小费吗?

1 个答案:

答案 0 :(得分:2)

使用负面的lookbehind断言。 Lookarounds是零宽度断言,它不会消耗任何字符。

(?<!{)pizza

仅当pizza前面没有{时,才会匹配pizza。只需将匹配的字符串{替换为您想要的字符串。

DEMO

通过捕获组捕获前面的字符(不是kale的任何字符),并将匹配的字符替换为组索引1中的字符加上要添加的字符串,即([^{]|^)pizza

{{1}}

DEMO