正規表現を使用してエスケープ文字を分析したい。
たとえば、文字列に文字(a)が含まれている場合、正規表現パターンは一致する必要がありますが、文字aの前にアポストロフィ('a)が付いている場合は一致しない必要があります。
例えば:
"a" --true、 "aba" --true、 "car" --true、 "foo" --false、 "c'ar" --false
ありがとう。
正規表現を使用してエスケープ文字を分析したい。
たとえば、文字列に文字(a)が含まれている場合、正規表現パターンは一致する必要がありますが、文字aの前にアポストロフィ('a)が付いている場合は一致しない必要があります。
例えば:
"a" --true、 "aba" --true、 "car" --true、 "foo" --false、 "c'ar" --false
ありがとう。
s が前にない sのみに一致させるには、否定後読みを使用します。a
'
(?<!')a
警告: 一部の正規表現 (JavaScript、Ruby、Tcl)は後読みをサポートしていません。
Javascriptで実行するソリューションが欲しい
次に、ボイラープレート リファレンスのMimicking Lookbehind in JavaScript を参照します。または、正規表現を使用せずに、自分で文字列をスキャンするだけです。これは非常に簡単で、後読みを模倣するどのバージョンよりもおそらく高速です。
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;
}