正则表达式:仅当后一个序列不是特定字母时才匹配

时间:2018-01-20 18:35:27

标签: regex

我试图以“$ {234}”的形式匹配字符串,但是在右侧没有“=”字符的字符串。

例如:

v1 = 345 + ${234};

这里$ {234}应匹配。我可以用\ $ {([0-9] +)}

来做到这一点

但以下内容不应匹配:

${234} = 345 + v5;

因为“$ {234}”序列右侧有一个“=”。

我知道有一些表达式可以匹配“以...结尾的序列”。但是如你所见,这里有点不同。

是否可以将上述序列与regexp匹配?

2 个答案:

答案 0 :(得分:2)

您可以使用否定前瞻(?!...)

\${([0-9]+)}(?!.*=)

只有在<{1}}之后 =某个点时才会匹配。

答案 1 :(得分:0)

您可以使用

(?:(\$\{\d\d\d\}) ?[^=])

这基本上是文字$,后跟文字{,后跟3 digits,后跟文字},后跟可选空格,,后跟=。

f.e。:只会将$ {234}作为群组捕获。

在此测试:https://regexr.com/3jgqk