匹配状态

时间:2016-08-10 14:36:19

标签: regex

我需要只匹配下面模式中的城市和州名。示例:我想仅提取加利福尼亚州萨克拉门托,温哥华,不列颠哥伦比亚省。我不想要美国和加拿大。

我编写了以下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

1 个答案:

答案 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字母