如何使用正則表達式查找最大中一個字的重複字母數量? 重複的字母可以用其他字母分隔,如「備忘錄」:'m'用'e'分隔。 例如:單詞「最大」應該返回2,導致'e'或't'重複兩次,兩次是最大重複次數。 我試過像/([a-z]{1,})\1/
這樣的模式,但它不適用於這種情況。 預先感謝您。查找Javascript中某個單詞中重複字母的最大數量
回答
這是完成此操作的JavaScript方式。這樣做正則表達式是不可能的。
var exp = 'hello world' ;
var expCounts = {};
var maxKey = '';
for(var i = 0; i < exp.length; i++) {
var key = exp[i];
if(!expCounts[key]){
expCounts[key] = 0;
}
expCounts[key]++;
if(maxKey == '' || expCounts[key] > expCounts[maxKey]){
maxKey = key;
}
}
console.log(maxKey + ":" + expCounts[maxKey]); //logs l:3
的jsfiddle
這裏是另一種方式與JavaScript來做到這一點:
function greatestRepeat(str) {
var maxRepeat = 0;
var letterRepeated = null;
for(var i=0; i<str.length; i++) {
\t var currentLetter = str.charAt(i);
var timesRepeated = str.split(currentLetter).length-1;
if(timesRepeated > maxRepeat) {
maxRepeat = timesRepeated;
letterRepeated = currentLetter;
}
}
return letterRepeated;
}
console.log(greatestRepeat("memo"));
正如我在評論中提到的,這不能純粹用正則表達式來完成。由於@MillieSmith聲明這是因爲常規語言無上下文。
這不起作用。例如,'greatestRepeat(「aabbbcc」)'返回'a',而不是'b'。我不太清楚「split」中的分界線是在做什麼? –
@torazaburo固定的,帶有split的行獲取該字符的當前重複次數。我在編輯時意外地將它從'str'改爲'currentLetter',但沒有注意到。 –
如何使用正則表達式在JavaScript中查找單詞中重複字母的最大數量?
你不能,除非你願意來限制重複的最大數量,在這種情況下,你可以用下面這樣做:
regexp = /(?:.*(.)(?:.*\1){2})|(?:.*(.)(?:.*\2){1})/
^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
MATCH 2 REPETITIONS MATCH ONE REPETITION
這是一個最大的兩個重複的情況下(三次出現相同的字符)。它的作用是查找特定字符序列的第一個匹配項((.)
),然後再次查找任何和該字符(.*\1
),重複兩次;換句話說,角色出現三次。如果不匹配,那麼它會找到一個特定字符序列的第一個匹配,然後是任何和該字符,重複一次;換句話說,角色出現兩次。您可以將其擴展至允許的最大重複次數(9,因爲AFAIK後向引用僅支持單個數字)。
如果您使用此作爲
match = 'aabbbcc'.match(regexp)
那麼正確答案("b"
)將在match[1]
。如果沒有重複,則撥打match
將失敗。
......除非你有一個像.NET一樣的「正則表達式」引擎,它可以計算重複的捕獲......'(。)(?=(?:。*?(\ 1))+)',連同'.Matches ()'會返回一個匹配列表,每個匹配包含一個捕獲列表;你只需要找到最長的一個。好的,這是在正則表達式引擎之外需要的額外步驟,但非常接近。無論如何,正則表達式絕對不是正確的工具。 –
- 1. 查找字母中每個字母出現次數最多的單詞
- 2. 查找列表中的某個字母開頭的詞數
- 3. 從查找最大數量到查找數組中的單詞的變化
- 4. 查找以某個字母開頭的所有單詞
- 5. 查找字符串中每個單詞的第一個字母
- 6. 如何刪除單詞的最後一個重複的字母
- 7. 確定單詞中的字母數量?
- 8. Swift大寫字母中每個單詞的第一個字母
- 9. 查找大數組中最常見的六個字母組合
- 10. 查找字母詞
- 11. 將某個單詞的第一個字母更改爲大寫字母
- 12. 如何查找只有大寫字母的單詞(字符串)?
- 13. 在文本文件中查找6個字母的單詞
- 14. 找到一個有大寫字母的單數詞
- 15. 大寫字母中的三個字母單詞的第一個和最後一個字母
- 16. 如何從Java中的單詞中刪除重複的字母
- 17. Javascript:查找字符串中最長的單詞
- 18. 使用Javascript來查找字符串中最常見的單詞?
- 19. 查找單詞中的元音數量
- 20. 查找字符串中的某個單詞,然後環繞它
- 21. 查找單詞列表中的某個字符
- 22. 在字符串中查找重複的單詞python
- 23. 查找tagfield值中的某些單詞
- 24. 若要查找整數數組中前3個最大重複數字
- 25. 如何使用LINQ查找並顯示字符串中最重複的單詞?
- 26. 查找二維數組中的最大單詞
- 27. 將字符串中每個單詞的最後一個字母大寫
- 28. 查找Vb.net中單詞中所有字母的變體
- 29. 查找單詞字母網格
- 30. 查找重複行,最大數據
所以在你的例子中是2返回的,因爲最大值是2,還是因爲2個字母最大? ...換句話說,應該備忘錄返回1或2 ... ...,我懷疑正則表達式可以做你想要的任何一種情況下 –
@JaromandaX'備忘錄'應該返回2.只是返回最大值,抱歉混淆。 – AndyHu
爲什麼你需要這個正則表達式?它們通常不用於數數。 – samsonthehero