我一直在尝试编写/找到一个正则表达式,用于识别3个以上连续的字母/数字实例。
示例:
CHAIRMAN AAAAAAAND CHIEF EXECUTIVE OFFICER
这将是'**AAAAAAA**'
谢谢!
答案 0 :(得分:0)
答案 1 :(得分: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}
并使正则表达式不区分大小写的调用,但是像这样的小正则表达式,我认为只是拼写它对于其他人来说更容易阅读。
答案 2 :(得分:0)
echo 'CHAIRMAN AAAAAAAND CHIEF EXECUTIVE OFFICER' | grep -E -o '([A-Z])\1{2,}'
输出:
AAAAAAA
用于Unix和Linux的 grep
工具
-E
PATTERN是扩展正则表达式(ERE)
-o
仅显示匹配PATTERN的行的部分
([A-Z])
匹配单个字符,并将匹配作为反向引用
\1{2,}
使用该反向引用加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:]]
这样的内置字符类是更好的选择。