正则表达式匹配3个大写字母后跟一个小写字母后跟3个大写字母?

时间:2011-08-17 09:37:38

标签: python regex

我需要在python中使用正则表达式,它正好匹配3个大写字母,后跟一个小写字母后跟正好3个大写字母。 例如,它应匹配ASDfGHJ而不是ASDFgHJK。

5 个答案:

答案 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;以资本开头,所以前三个字母必须是大写字母。