从单词边界提取大写字母



我正在尝试提取"at""on"之间的大写文本。

s = 'visit at AIRTEL on some day'
import re
re.findall('(?<=at).[A-Z]+.(?=on)', s)

这将正确返回所需单词。

但在其他情况下失败,例如

s = 'visit at AIRTEL.IN on some day'

大写字母可能包含一个或多个特殊字符。尽管期望的字符串将总是在'at''on'的字边界之间。

使用以下正则表达式:

atb([^a-z]*)bon

由于您说过需要捕获除小写字母以外的所有字符,因此在这种情况下,除A-Za-z之外的所有字符都变成了特殊字符。我建议使用否定字符集。此正则表达式捕获aton之间没有小字母的所有内容。

演示