我需要一个在Python中匹配正好由3个大写字母、1个小写字母和正好3个大写字母组成的正则表达式。
例如,它应该匹配ASDfGHJ而不是ASDFgHJK。
r'\b[A-Z]{3}[a-z][A-Z]{3}\b'
如果这是一个完整的单词,那么它将匹配您发布的内容。
r'(?<![^A-Z])[A-Z]{3}[a-z][A-Z]{3}(?![A-Z])'
只要它前面或后面没有另一个大写字母,这将匹配您发布的内容。
u"Ů"
。 - Flimm这里是:
'[A-Z]{3}[a-z]{1}[A-Z]{3}'
编辑:你需要使用单词边界:
r'\b[A-Z]{3}[a-z]{1}[A-Z]{3}\b'
ASDFgHJK
相匹配。此外,{1}
是不必要的。 - agfre.findall(r'[a-z][A-Z]{3}([a-z])[A-Z]{3}[a-z]', data)
u"Ů"
。 - Flimm这将检查一个小字符是否恰好出现在两侧都有3个大写字符之间。
我使用了前瞻和后顾来确保两侧恰好有三个大写字符。
r'(?<![A-Z])[A-Z]{3}[a-z][A-Z]{3}(?![A-Z])'.
>>> 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]'
^ ->首字母大写,所以前三个字母必须是大写。
{1}
,他想要小写字母后面跟着 恰好 三个大写字母。 - agfu"Ů"
。 - Flimm