我需要只匹配下面模式中的城市和州名。示例:我想仅提取加利福尼亚州萨克拉门托,温哥华,不列颠哥伦比亚省。我不想要美国和加拿大。
我编写了以下reggex [A-Z] [a-z] +,但它匹配状态,其名称中的空格为多个匹配而不是单个匹配。
~ Sacramento, California ~ USA;~ Vancouver, British Columbia ~ CANADA
或
~ Belgaum, Karnataka ~ INDIA;~ Mumbai, Maharashtra ~ INDIA;~ Raipur, Chhattisgarh ~ INDIA;~, Goa ~ INDIA;~, Uttar Pradesh ~ INDIA;~,~ CHINA ~ Turan, North District ~ ISRAEL
答案 0 :(得分:1)
如果输入中只有ASCII字母,则可以使用
if / else if / else
请参阅regex demo
模式详情:
[A-Z][a-z]+(?: +[A-Z][a-z]+)*
- 大写的ASCII字母后跟1 +小写ASCII字母[A-Z][a-z]+
- 零个或多个序列:
(?: +[A-Z][a-z]+)*
- 1个或多个空格 +
- 大写的ASCII字母后跟1 +小写ASCII字母