0

我想在使用正则表达式时分析转义字符。

例如,如果字符串中包含字符 (a),则正则表达式模式应该匹配,但如果字符 a 前面有撇号 ('a),则它不应该匹配

例如:

“a” - 真,“aba” - 真,“汽车” - 真,“foo” - 假,“c'ar” - 假

谢谢。

4

2 回答 2

1

使用否定的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;
}
于 2013-02-08T04:01:09.980 回答
0

您可以使用此模式:

(?<!\')a

这是演示:http ://regexr.com?33mue

(?<!\')是否定的后视,a如果前面没有. 则表示匹配\'

于 2013-02-08T04:04:02.100 回答