2013-08-04 32 views
6

私にはわからない正規表現の質問があります。 最初に任意の数のaで構成されるすべての文字列に一致する必要があり、aの数が偶数の場合は1つの0、aの数が奇数の場合は1つのいずれか1つに一致する必要があります。正規表現奇数/偶数量

偶数/奇数の追跡方法を教えてください。

サンプル

  • AAA1
  • aaaa0あなたが使用することができ
+2

試しましたか? –

+0

いくつかのサンプル文字列を貼り付けます。 –

答えて

10

^(a(aa)*1|(aa)+0)$

または

^(?:a(?:aa)*1|(?:aa)+0)$キャプチャを使用している場合。

最初の部分:a(aa)*1は、任意のaの後に1を付け、2番目の部分:(aa)+0は、任意のaの後に0を付けます。

正規表現でパターンのコンポーネントの一致数を追跡することはできません。彼らには記憶がありません。幸いにも、あなたはこの場合にその限界を乗り越えることができます。

+0

答えをありがとう、説明できますか?:それを知っていますか? 0または1を意味しますが、一緒に意味するものは何ですか? –

+0

(?:pattern)は、Javaの(pattern)と同等のものではありません。マッチャー内のグループをチェックしていない場合、それらのパターンはどちらも同等です。この文脈では、0または1を意味するわけではありません。http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html –

7

^(?:aa)*(?:a1|0)$