我试图从几篇文章中提取城市和国家。我正在使用的正则表达式:
of Mogadishu
in Istanbul
of Beletwein
它允许我提取这种位置:
in downtown Tunis
in central Mogadishu
in a town near Mogadishu
但是,如果按照以下方式制定,则不允许我提取位置:
break LINE
我想提取的是在3个单词范围内的介词(in,of,through,at)之后以大写字母开头的任何单词。
[在链接中有一个文本语料库的样本](https://regex101.com/r/0DRayP/6)和正则表达式
答案 0 :(得分:2)
\b(at|in|of) (?:\w+\s){0,3}([A-Z]\w+)
我相信它会触及示例文本中的所有内容。
\b
确保介词本身而不是另一个词的一部分。 {0,3}
括号中的准备工作和位置之间的其他字数。答案 1 :(得分:0)
尝试使用:
\b(?:at|in|of)\b[^A-Z]+([A-Z]\w*)
答案 2 :(得分:0)
可能是这样的(你可以改变单词数量):
(at|in|of)( \w+){0,2} [A-Z](?:\w+)?