正则表达式匹配一美元,之前没有反斜杠

时间:2016-01-26 00:04:17

标签: javascript regex google-apps-script escaping regex-negation

我想在之前只匹配没有反斜杠的美元符号,如下所示:

$not\$yes $  
^.........^

到目前为止,我有[^ \\] \ $,但这并不匹配开始一行的任何美元。美元可能是文档中的第一个符号,因此匹配换行符不起作用。我该如何匹配?到目前为止我的正则表达式是否正确?

2 个答案:

答案 0 :(得分:3)

您可以将an alternation^ anchor一起使用,以便在字符串中首先匹配$字符,如果它是字符串中的第一个字符,或者它是否跟随不是反斜杠的字符

/(?:^|[^\\])\$/

说明:

  • (?: - 开始用于对更改进行分组的non-capturing group
  • 使用Alternation 匹配非^|[^\\]字符的
  • \ - ^ anchor匹配字符串的开头
  • ) - 关闭用于对^|[^\\]
  • 进行分组的非捕获组
  • \$ - 字面上的$字符

换句话说,^锚将匹配字符串的开头;虽然[^\\]将匹配除反斜杠之外的任何内容。管道|充当“或”运算符,它将匹配字符串的开头或除反斜杠之外的任何内容(即^|[^\\])。

因此,在您提供的字符串中,将匹配第一个/最后一个$字符。

答案 1 :(得分:2)

使用负面的lookbehind断言

(?<!\\)\$

行动中:https://regex101.com/r/dA8aA1/1