0

文字列にコンマがあるかどうかを調べる正規表現を作成しようとしていますが、スラッシュカンマはありません。例 - ここに一致があります: aaa,aaaここ に一致はありません: aaa\,aaa

解決策を考えられますか?

4

3 に答える 3

2

これは動作するはずです: [^\\],. \a の後に aが続かない任意の文字と一致する必要があり,ます。(Regex Pal のRegex Testerを使用してこれをテストしました)。あなたの場合、使用している言語によっては、これを使用する必要があるかもしれません: [^\],.

ただし、このパターンは、文字列の最初の文字で,ないことを前提としています。そのような不測の事態にも対応したい場合は、次の使用を検討する必要があります(^,)|([^\\],)。これ,により、 が文字列の最初の文字であるか、または が前に付いていないことがチェックされます\

編集:問題は、 so: のような場合、aaa,aaa私が提案する正規表現は文字の1つ(の前のもの,)を取ることです。私はJavaコードで次の行を試しました:String[] grp = "aaa,aaa".split("(?<!\\\\),");そしてそれは私のために働いた(上記の他の回答で提案されたように). 使用している言語に関する情報を提供すると、ヘルプが得られる可能性が高くなります。

于 2012-07-12T13:16:01.470 に答える
1

コンマのみに一致させるために、否定後読みを使用できます。

/(?<!\\),/

正規表現エンジンがそれをサポートしていない場合は、否定された文字クラスを使用します。これは、コンマ (または文字列の開始) の前の文字にも一致します。

/(^|[^\\]),/
于 2012-07-12T13:16:49.750 に答える
1

これを試してください:

.*(?<!\\),.*

一般に、このタイプには 4 つの異なるアサーションがあります。

(?=pattern)
    is a positive look-ahead assertion
(?!pattern)
    is a negative look-ahead assertion
(?<=pattern)
    is a positive look-behind assertion
(?<!pattern)
    is a negative look-behind assertion 
于 2012-07-12T13:20:38.037 に答える