我只需要匹配以下模式中的城市和州名称。示例:我只想提取萨克拉门托、加利福尼亚州、温哥华、不列颠哥伦比亚省。我不想要美国和加拿大。
我编写了以下正则表达式 [A-Z][a-z]+,但它将名称中带有空格的状态匹配为多个匹配项,而不是单个匹配项。
~ 加利福尼亚州萨克拉门托 ~ 美国;~ 不列颠哥伦比亚省温哥华 ~ 加拿大
或
~ 贝尔高姆,卡纳塔克邦 ~ 印度;~ 孟买,马哈拉施特拉邦 ~ 印度;~ 赖 bool ,恰蒂斯加尔邦 ~ 印度;~,果阿 ~ 印度;~,北方邦 ~ 印度;~,~ 中国 ~ 图兰,北区 ~以色列
最佳答案
如果您的输入中只有 ASCII 字母,则可以使用
[A-Z][a-z]+(?: +[A-Z][a-z]+)*
请参阅regex demo
图案详细信息:
[A-Z][a-z]+
- 一个大写 ASCII 字母,后跟 1 个以上小写 ASCII 字母(?: +[A-Z][a-z]+)*
- 零个或多个序列:+
- 1 个或多个空格[A-Z][a-z]+
- 一个大写 ASCII 字母,后跟 1 个以上小写 ASCII 字母
关于用于匹配状态的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38876433/