使用stringr提取名称的正则表达式中的问题

时间:2017-03-28 10:39:05

标签: r regex stringr

我无法完全理解为什么我的正则表达式无法提取我想要的信息。我有一个不公开的矢量,看起来像这样:

   text <- c("Senator, 1.4balbal", "rule 46.1, declares",
             "Town, 24", "A Town with a Long Name, 23", "THIS IS A DOCUMENT,23)

我想创建一个正则表达式,只提取&#34; Town&#34;的名称,即使该城镇有一个长名称,也就是写在向量中的名字(&#34; A Town with长名&#34;)。我试过这个来提取城镇的名字:

   reg.town <- "[[:alpha:]](.+?)+,(.+?)\\d{2}" 
   towns<- unlist(str_extract_all(example, reg.prov))

但我提取了&#34;,&#34;周围的一切。

提前致谢,

2 个答案:

答案 0 :(得分:2)

看起来城镇名称以大写字母([[:upper:]])开头,以逗号结尾(如果没有逗号则继续到文本末尾)([^,]+)并且应该是在输入文本的开头(^)。在这种情况下相应的正则表达式将是:

^[[:upper:]][^,]+

演示:https://regex101.com/r/QXYtyv/1

答案 1 :(得分:1)

感谢@Dmitry Egorov在评论中的演示文章,我已经解决了这个问题。正则表达式是这一个([[:upper:]].+?, [[:digit:]])

感谢您的快速回复!!