从单词边界中提取大写字母

时间:2018-12-17 05:45:00

标签: python regex

我正在尝试提取"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'的单词边界之间。

1 个答案:

答案 0 :(得分:1)

使用以下正则表达式:

at\b([^a-z]*)\bon

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

Demo