我想在使用正则表达式时分析转义字符。
例如,如果字符串中包含字符 (a),则正则表达式模式应该匹配,但如果字符 a 前面有撇号 ('a),则它不应该匹配
例如:
“a” - 真,“aba” - 真,“汽车” - 真,“foo” - 假,“c'ar” - 假
谢谢。
我想在使用正则表达式时分析转义字符。
例如,如果字符串中包含字符 (a),则正则表达式模式应该匹配,但如果字符 a 前面有撇号 ('a),则它不应该匹配
例如:
“a” - 真,“aba” - 真,“汽车” - 真,“foo” - 假,“c'ar” - 假
谢谢。
使用否定的lookbehind仅匹配a
前面没有s 的'
s。
(?<!')a
警告:一些正则表达式(JavaScript、Ruby、Tcl)不支持lookbehind。
我想要在 Javascript 中运行的解决方案
然后我将向您推荐我的样板参考:在 JavaScript 中模仿 Lookbehind。或者,只需自己扫描字符串,而不使用正则表达式。这是一个非常简单的方法,而且很可能比任何后视模仿版本都快。
function matches_a_not_preceded_by_apos(str)
{
var found_an_a = false;
for (var i=1; i<str.length; i++)
{
if (str.charAt(i) === "a")
{
found_an_a = true;
if (str.charAt(i-1) === "'")
{
return false;
}
}
}
return found_an_a;
}