我有一個正則表達式問題,我不知道該怎麼做。 它必須匹配包含任意數量的a的所有字符串,然後如果a的數目是偶數,則可以是單個0,如果a的數目是奇數,則可以是單個1。正則表達式奇/偶數量
如何跟蹤偶數?
樣品
- AAA1
- aaaa0
我有一個正則表達式問題,我不知道該怎麼做。 它必須匹配包含任意數量的a的所有字符串,然後如果a的數目是偶數,則可以是單個0,如果a的數目是奇數,則可以是單個1。正則表達式奇/偶數量
如何跟蹤偶數?
樣品
^(a(aa)*1|(aa)+0)$
或
^(?:a(?:aa)*1|(?:aa)+0)$
如果您使用捕獲。
第一部分:a(aa)*1
將匹配a的任意奇數,後面跟一個,第二部分:(aa)+0
將匹配任何偶數個a,後跟零。
您無法跟蹤正則表達式中模式組件的匹配數量。他們沒有記憶。幸運的是,在這種情況下你可以繞過這個限制。
謝謝你的回答,你能解釋一下嗎?:,我知道嗎?意味着0或1,但它們是什麼意思呢? –
(?:pattern)只是Java中(模式)的非捕獲等價物。如果您沒有在匹配器中檢查組,那麼這兩種模式都是相同的。在這種情況下,它並不意味着0或1. http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html –
你可以使用:
^(?:aa)*(?:a1|0)$
你嘗試過什麼嗎? –
粘貼一些示例字符串。 –