我已经编写了这个正则表达式,但它没有按预期工作。
((?:[A-Z][\w]+)?),[\s]([A-Z]{2})
以下是示例输入。
Fort Worth, TX
This is Forth Worth, TX
We are looking for someone from Columbus, MS.
我期望 City 和 State 出现在上述带有 python 正则表达式的字符串样本中,但这并没有按预期工作。
print re.findall('((?:[A-Z][\w]+){1,2}),[\s]([A-Z]{2})', input)
我错过了什么?
最佳答案
您可能想在城市名称组中添加空格字符,如下所示:
re.findall('((?:[A-Z][\w]+\s*){1,2}),[\s]([A-Z]{2})', input)
这将匹配一个大写拉丁字母,后跟一个或多个单词字符和零个或多个空白字符,所有这些字符都可能出现一到两次,在组 1 中捕获,后跟一个逗号(一个空白字符)和两个大写拉丁字母,在第 2 组中捕获。
关于python - 查找 2 个大写字母之前的 n 个以大写字母开头的单词(正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18834466/