2016-06-30 8 views
-3

スタンドアロンの単一の '='文字を正規表現に一致させようとしています。例えばスタンドアロンの文字に一致する正規表現

、このコード

if(y == 5 || x = 1) { 
    Do something ... 
} 

のために私は、単一の '='、およびない "==" にマッチさせたいです。私は正規表現の文字列の組み合わせをたくさん試しましたが、私はまだ正しい位置に一致を得ることができません。

+0

なぜ正規表現を使用してコードを解析していますか?これが非常に簡単なツールでない限り、より堅牢なものが必要になります。 – TartanLlama

+0

a =を探して、先行するか後に別の=を付けないか? –

+0

私はその特定の方法を使用する場合、 "=="部分の2番目の "="と一致します。 –

答えて

3

あなたが否定後読みと肯定先読み使用してこれを達成することができます

(?<!=)=(?!=) 

例:先読み/後読みの詳細についてはhttps://regex101.com/r/uV5eC5/1

は、Regex lookahead, lookbehind and atomic groups

+2

正規表現パーサーがこれをサポートしている場合。 –

+0

ツールをリンクしていただき、ありがとうございます。私はそれをC++の正規表現の構文に変換する必要があります。 –

+0

これは、BoostライブラリまたはPCREライブラリでのみ機能します。 C++ 11の正規表現は、ECMAScript正規表現に従います。これは、ルック・バックをサポートしていません。 – nhahtdh

0

FBOのソリューションは確かにある読みより洗練されていますが、ルックバックを持たないJSで行う必要がある場合は

[^=]=[^=] 

あなたが確認しているコードのように見えるので、=の前後には常に文字が存在するため、いずれの文字も別の=ではないというテストです。

+0

あなたの答えと彼の両方は、C++正規表現の構文に変換してから働きました。 –

+1

後でreplaceを使用する場合は、前のシンボルと '='の後のシンボルも置き換えられることに注意してください。つまり、 '([^ =])(=)([^ =])'と置き換えて '$ 1 == $ 3'を使用することができます(' = 'を' == ')。 –

関連する問題