文字列にコンマがあるかどうかを調べる正規表現を作成しようとしていますが、スラッシュカンマはありません。例 - ここに一致があります: aaa,aaaここ に一致はありません: aaa\,aaa
解決策を考えられますか?
文字列にコンマがあるかどうかを調べる正規表現を作成しようとしていますが、スラッシュカンマはありません。例 - ここに一致があります: aaa,aaaここ に一致はありません: aaa\,aaa
解決策を考えられますか?
これは動作するはずです: [^\\],
. \
a の後に aが続かない任意の文字と一致する必要があり,
ます。(Regex Pal のRegex Testerを使用してこれをテストしました)。あなたの場合、使用している言語によっては、これを使用する必要があるかもしれません: [^\],
.
ただし、このパターンは、文字列の最初の文字で,
はないことを前提としています。そのような不測の事態にも対応したい場合は、次の使用を検討する必要があります(^,)|([^\\],)
。これ,
により、 が文字列の最初の文字であるか、または が前に付いていないことがチェックされます\
。
編集:問題は、 so: のような場合、aaa,aaa
私が提案する正規表現は文字の1つ(の前のもの,
)を取ることです。私はJavaコードで次の行を試しました:String[] grp = "aaa,aaa".split("(?<!\\\\),");
そしてそれは私のために働いた(上記の他の回答で提案されたように). 使用している言語に関する情報を提供すると、ヘルプが得られる可能性が高くなります。
コンマのみに一致させるために、否定後読みを使用できます。
/(?<!\\),/
正規表現エンジンがそれをサポートしていない場合は、否定された文字クラスを使用します。これは、コンマ (または文字列の開始) の前の文字にも一致します。
/(^|[^\\]),/
これを試してください:
.*(?<!\\),.*
一般に、このタイプには 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