我需要在python中使用正则表达式,它正好匹配3个大写字母,后跟一个小写字母后跟正好3个大写字母。 例如,它应匹配ASDfGHJ而不是ASDFgHJK。
答案 0 :(得分:20)
r'\b[A-Z]{3}[a-z][A-Z]{3}\b'
如果它是完整的单词,这将与您发布的内容相匹配。
r'(?<![^A-Z])[A-Z]{3}[a-z][A-Z]{3}(?![A-Z])'
这将匹配您发布的内容,只要它不在其他大写字母之前或之后。
答案 1 :(得分:2)
这里是:
'[A-Z]{3}[a-z]{1}[A-Z]{3}'
<强>被修改强> 你还需要使用单词边界:
r'\b[A-Z]{3}[a-z]{1}[A-Z]{3}\b'
答案 2 :(得分:0)
re.findall(r'[a-z][A-Z]{3}([a-z])[A-Z]{3}[a-z]', data)
答案 3 :(得分:0)
这将检查双方的3个大写字母之间是否确实存在一个小字符。
我已使用前瞻性和后向性来确保正反两个大写字母。
r'(?<![A-Z])[A-Z]{3}[a-z][A-Z]{3}(?![A-Z])'.
答案 4 :(得分:-1)
>>> import re
>>> pattern = r'^[A-Z]{3}[a-z]{1}[A-z]'
>>> re.match(pattern , "ABCaABC").start()
0
>>> print re.match(pattern , "ABCABC")
None
>>> print re.match(pattern , "ABCAABC")
None
>>> print re.match(pattern , "ABCAaABC")
None
>>> print re.match(pattern , "ASDFgHJK")
None
>>> print re.match(pattern , "ABCaABC")
<_sre.SRE_Match object at 0x011ECF70>
r'^[A-Z]{3}[a-z]{1}[A-z]'
^ - &gt;以资本开头,所以前三个字母必须是大写字母。