python - 查找 2 个大写字母之前的 n 个以大写字母开头的单词(正则表达式)

标签 python regex

我已经编写了这个正则表达式,但它没有按预期工作。

((?:[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/

相关文章:

python - 从饼图中删除标签会移动图例框

python - Matplotlib savefig 截断pyplot表

python - 如何在python 3.8中安装opencv-python

正则表达式 - 选择查询字符串值的值并在第一个&符号处停止

java - 在 Java 中枚举正则表达式的可能匹配项

python - 在 Windows 中手动将包添加到 PyCharm

python - Tornado +桃子。重新启动损坏的连接

javascript - 如何替换字符串中的多个字符?

javascript - 序列号的正则表达式,如 12345 或 456789

Python Regex 匹配 YAML Front Matter