2017-07-06 283 views
0

我一直在試圖寫/找到一個正則表達式,它將識別出連續3個字母/數字的實例。正則表達式來識別3個連續的相同的字母/數字

實施例:

CHAIRMAN AAAAAAAND CHIEF EXECUTIVE OFFICER 

這將是一個匹配二/三'**AAAAAAA**'

致謝!

+0

我試過幾種不同的東西。這是我試過的最後一個... (?i)(?:([a-zA-Z])\\ 1 {2,})* – user8265973

+0

[(([A-Za-z \ d])\ 2 {2,})'](https:// regex101。 com/r/wMMWJH/1) –

回答

0

您可以通過反向引用做到這一點:.*([A-Za-z0-9])\1\1.*

這裏,每個\1捕獲組匹配的字符相匹配。

Regex101處進行實驗。

+0

謝謝!這一個工作很棒! – user8265973

0

你是在正確的軌道上,這裏是在Python的例子:

import re 

text = "CHAIRMAN AAAAAAAND CHIEF EXECUTIVE OFFICER" 

regex = re.compile("([A-Za-z0-9])\\1\\1") 

if re.search(regex, text): 
    print ("yuppers") 

本身尋找任何字母或數字的正則表達式,然後什麼字母或數字它匹配兩次。你可以做的東西,如:

[A-Z\d]\\1{2} 

,使正則表達式不區分大小寫的呼喚,而不是但這樣我覺得只是拼寫出來更容易閱讀別人走過的路有點正則表達式。

0

echo 'CHAIRMAN AAAAAAAND CHIEF EXECUTIVE OFFICER' | grep -E -o '([A-Z])\1{2,}' 

輸出:

AAAAAAA 

grep工具,Unix和Linux
-E PATTERN是一個擴展的正則表達式(ERE)
-o示出了線匹配的僅部分PATTERN
([A-Z])匹配單個字符並且tak ES護理匹配作爲使用該向後引用加上2個或更多相等的回參考
\1{2,}3個連續的字符或多個

所以:

echo 'not nn nnn oo ooo tt ttt 123 11 111' | grep -E -o '(\w)\1{2,}' 

將匹配:

nnn 
ooo 
ttt 
111 

或者:

echo 'not nnn ooo ttt 123 111' | grep -E -o '([[:alpha:]]|[[:digit:]])\1{2,}' 

具有相同的輸出。

但由於可能會或可能你不知道\w比賽像[a-z]或內置的字符類像[[:alpha:]]_以及因此使用字符類是一個更好的選擇。

相關問題