如果字符串出現多次出現的字符,我需要使用正則表達式來提供幫助。我已經驗證了兩個字符串的長度,它們將始終相等。下面是我的意思,例如。字符串「aab」和「abb」。這兩個應該匹配正則表達式,因爲它們具有重複字符,第一個字符串中的「aa」和第二個字符串中的「bb」。正則表達式匹配不止一次出現的字符
2
A
回答
9
既然你說「ABA」式的重複不計,反向引用應該使這個簡單的:
(.)\1+
會發現字符序列。試試看:
java.util.regex.Pattern.compile("(.)\\1+").matcher("b").find(); // false
java.util.regex.Pattern.compile("(.)\\1+").matcher("bbb").find(); // true
2
如果你正在檢查anagrams也許不同的算法會更好。
如果您對字符串(原始和候選)進行排序,則可以使用字符串比較來檢查字符串。
0
static final String REGEX_MORE_THAN_ONE_OCCURANCE_OF_B = "([b])\\1{1,}";
static final String REGEX_MORE_THAN_ONE_OCCURANCE_OF_B_AS_PREFIX_TO_A = "(b)\\1+([a])";
「aba」是否合格? – Lazer 2010-08-28 21:13:53
不,不會。我用這個來解決一個字謎問題,aba可以寫成baa或aab。我給出的第一個字符串是源字符串,第二個字符串是需要測試的字符串,因爲你可以看到它們不是字典 – Zerobu 2010-08-28 21:16:44
由於'perl'與這個問題無關,所以我刪除了'perl '標籤。如果您真的需要,請詳細說明添加'perl'標籤的原因。 – BalusC 2010-08-28 21:55:09