web-dev-qa-db-ja.com

=とaを含む正規表現。

正規表現を使用して、等号(=)で始まり、任意の数の文字を含むセミコロン(;)で終わるすべての部分文字列を検索しようとしています。このようなものにする必要があります=*;

何らかの理由で、equalsが登録されていません。正規表現が等号に気付くようなエスケープ文字はありますか?

私はJavaで作業しています。もしそれがこの質問に何らかの関係がある場合。

17
chama

これはあなたが探しているものかもしれません。アスタリスクを適用する文字セットまたはワイルドカード文字を指定する必要があります。

"=([^;]*);"

消極的な量指定子を使用することもできます。

"=(.*?);"

括弧を使用すると、グループができます。最初のグループは試合全体であり、group[1]は、括弧内にあるグループです。

コードは次のようになります。

Regex r = new Regex("=([^;]*);");
Match m = r.Match(yourData);
while (m.Success) {
    string match = m.Groups[1];
    // match should be the text between the '=' and the ';'.
}
24
jjnguy

これは「0を含む任意の数の=記号」を探します。

=*;

「=に続けて他の任意の数の文字」が必要な場合は、

=.*;

ただし、それは貪欲に一致します-遅延一致が必要な場合(次のセミコロンが見つかったときに1つのグループを停止するように)、次のようにすることができます。

=.*?;
6
Jon Skeet

指定した正規表現は、;===;、...、================;と一致します。 =.*;(または貪欲でないことが必要な場合は=.*?;)はどうですか?

1

=。*;のようなもの

1
Martin Milan

Javaの正規表現について学ぶための優れた情報源: Sunのregexpに関する本

1
crunchdog