我想解決以下問題。Java字符串匹配正則表達式
給定一個字符串和一個正則表達式模式,給出模式在字符串中出現的次數。正則表達式的符號含義如下:
. - 2 occurrences of the previous character,
+ - 4 occurrences of previous character,
* – more than 5 occurrences of the previous character
樣品輸入給出:
aaaaaannndnnnnnnfffhfhhgjjjwkkkllclc
a.
n+
a*
an.
a.d.
樣本輸出給定:
5
3
1
1
0
我的做法是對所有的正則表達式轉換到正常模式。即對於上述示例,我的RegEx將是:
aa
nnnn
aaaaaa
ann
aadd
然後計算出現次數。但我毫無頭緒做什麼,如果輸入的正則表達式是:
a*d.
請注意,我不能使用任何內置的功能,如Pattern.Matches。有什麼建議麼?
謝謝。
'*'是未綁定的(大於5的任何數字),所以你不能真正使模式明確,因爲' a *'是一組有限的字符串。此外,任意重新定義「+」和「*」的人應該意識到她可能會導致很多混淆。 – 2014-12-13 10:56:58
你想創建新規則嗎? – 2014-12-13 11:24:53
如果您不能使用內建函數,將模式轉換爲「真實」的正則表達式模式有什麼好處?你可以使用正則表達式來完成這個任務嗎? – 2014-12-13 11:54:17