2012-08-05 17 views
8

文字列のエスケープされていないカンマ文字と一致する正規表現を作成しようとしています。regex - エスケープされていない文字を一致させる

私が探しているルールは、「コンマの前に偶数のバックスラッシュはありません」ということです。

テストケース:(?<!(\\+)),が、Pythonは私にerror: look-behind requires fixed-width patternを与える:

True abc,abc 
False abc\,abc 
True abc\\,abc 
False abc\\\,abc 
True abc\\\\,abc 
False abc\\\\\,abc 

私は否定的な外観ビハインドを使用しようとしました。

+0

生の文字列 'Rを使用してみてください '...''正規表現 – JBernardo

+0

を宣言するのはなぜ真実最初の例でありますか?それはエスケープされていません。スラッシュの数を数えて、それが偶数であるかどうかを判断できませんか? – Ben

+0

@JBernardo私はすでに生の文字列を使用しています。私はエスケープされていない文字を探しています。 – bcoughlan

答えて

18

この正規表現を試してみてください:(?<!\\)(?:\\\\)*,

説明:

(?<!\\) Matches if the preceding character is not a backslash 
(?:\\\\)* Matches any number of occurrences of two backslashes 
,   Matches a comma 
+0

これは動作します。どこからでも私はこれの説明を見つけることができますか? – bcoughlan

+2

しかし、マッチグループにはすべての先行するバックスラッシュが含まれています。これを回避するには? – bcoughlan

+0

なぜそれは問題ですか?あなたはすでに試合の最後の文字がコンマであることを知っています。 – MRAB

関連する問題