模式中的模式?

时间:2017-03-30 04:55:40

标签: regex

我想从Alta, Utah, USA抓取asd Alta, Utah, USA qwe。基本上我试图从文本中捕捉地点。它不是一个完美的方法,但这些地方必须从一个大写开始,然后使用逗号,然后是另一个带有大写字的单词。

到目前为止,我写道:

\s[A-Z][a-z]+[,]?

我想做多个单词,而不仅仅是第一个单词Alta。这是我尝试在其他方括号内使用方括号。

[\s[A-Z][a-z]+[,]?]+

但这不起作用,所以它必须在语法上不正确。

3 个答案:

答案 0 :(得分:2)

根据OP的评论更新:

(?:\s*[A-Z][A-Za-z]+[,\s])+

Demo

原始答案:

\b([A-Z][a-zA-Z]+),?

Original Demo

您将在每组比赛中获得第1组中国家/地区的名称

答案 1 :(得分:2)

我认为这就是你所需要的:

([A-Z][a-zA-Z]+)(,\s*([A-Z][a-zA-Z]+))*

虽然@Rizwan指出的要求(在他的评论中)仍有待理解。

enter image description here

Debuggex Demo

答案 2 :(得分:1)

刚加入聚会:

import re
dirty = "asd Alta, Utah, USA qwe"
p = re.compile("([A-Z][a-zA-Z]+)")
re.findall(p,dirty)

输出:

['Alta', 'Utah', 'USA']