我正在尝试构建一个正则表达式,我被要求过滤字符串,例如:
country:India provinces:Uttranchal city:Dehradun zip_code:12345
从这样的字符串:
keyword: one two three country:India provinces:Uttranchal city:Dehradun zip_code:12345 filter: myparameter
现在我准备了一个基本的正则表达式,例如:
country:\w+|provinces:\w+|city:\w+|zip_code:\w+
country
如果, provinces
,city
是单个词,哪种对我有用
但如果他们不是例子
keyword: one two three country:United-States provinces:Manhattan city:New-York zip_code:12345 filter: myparameter
由于非单词字符的限制,上述 reqex 不起作用-
您可以假设国家,省或城市,并有许多加入的词-
像
country:United-States-of-America provinces:Washington-Dc city:New-York-West
等等等等……
-\w+
一种递归模式 country
也是如此provinces
city
现在我也尝试为类似这样的东西构建一个正则表达式
(country:\w+(-\w+)*)|(province:\w+(-\w+)*)|(city:\w+(-\w+)*)|(zip_code:\w+(-\w+)*)
这虽然匹配,但正如您在 rubular screenshot attach 中看到的那样,它也呈现了不可接受的输出和 nil
我想要的只是避免在从给定的输入字符串中分离所需的字符串时导致匹配结果出现问题的non-accepted
and输出,或者有人可以建议我比这更好的正则表达式。nil