我需要一个正则表达式声明,它将检查行中的3个大写字母.
例如,它应匹配:ABC,aABC,abcABC
但它不应该匹配:AaBbBc,ABCDE
目前这是我的发言:
'[^A-Z]*[A-Z]{3}[^A-Z]*'
Run Code Online (Sandbox Code Playgroud)
但这符合ABCDE,我做错了什么?
提前致谢.
(?<![A-Z])[A-Z]{3}(?![A-Z])
Run Code Online (Sandbox Code Playgroud)
我分别在连续3个大写的中间正则表达式之前和之后指定了负面后观和负面前瞻.
与使用否定字符类相比,这是一个更好的选项,因为即使字符串的左侧或右侧没有字符,它也会成功匹配.
至于Python代码,我还没想出如何打印出实际匹配,
但这是语法:
使用re.match:
>>> import re
>>> p = re.compile(r'(?<![A-Z])[A-Z]{3}(?![A-Z])')
>>> s = '''ABC
... aABC
... abcABCabcABCDabcABCDEDEDEDa
... ABCDE'''
>>> result = p.match(s)
>>> result.group()
'ABC'
Run Code Online (Sandbox Code Playgroud)
使用re.search:
>>> import re
>>> p = re.compile(r'(?<![A-Z])[A-Z]{3}(?![A-Z])')
>>> s = 'ABcABCde'
>>> p.search(s).group()
'ABC'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4473 次 |
| 最近记录: |