Regex 正则表达式不匹配模式,后跟字符串中的水平省略号
我正在尝试使用R中的正则表达式,使用“stringr”包中的Regex 正则表达式不匹配模式,后跟字符串中的水平省略号,regex,r,Regex,R,我正在尝试使用R中的正则表达式,使用“stringr”包中的str\u match\u all从文本中提取Twitter标签 问题是,有时哈希标记会被截断,并在文本字符串的末尾附加一个水平省略号,如本例所示: str_match_all("hello #goodbye #au…","#[[:alnum:]_+]*[^…]")[[1]] 我可以使用上面的代码成功地提取一个hashtag列表,但我想排除被截断的hashtag(即具有水平省略号的hashtag) 这是令人沮丧的,因为我到处寻找解决方
str\u match\u all
从文本中提取Twitter标签
问题是,有时哈希标记会被截断,并在文本字符串的末尾附加一个水平省略号,如本例所示:
str_match_all("hello #goodbye #au…","#[[:alnum:]_+]*[^…]")[[1]]
我可以使用上面的代码成功地提取一个hashtag列表,但我想排除被截断的hashtag(即具有水平省略号的hashtag)
这是令人沮丧的,因为我到处寻找解决方案,上面的代码是我能想到的最好的,但显然不起作用
非常感谢您的帮助。我建议将
regmatches
与regexpr
和[^#]+(?!…)\\b
Perl风格的正则表达式一起使用:
x <- "#hashtag1 notHashtag #hashtag2 notHashtag #has…"
m <- gregexpr('#[^#\\s]+(?!…)\\b', x, perl=T)
// or m <- gregexpr('#\\w+(?!…)\\b', x, perl=T)
// or m <- gregexpr('#\\S+(?!…)\\b', x, perl=T)
regmatches(x, m)
x@Pascal我的道歉-这是“stringr”package@stribizhev我在OP的outputHi@Stribizev中得到了两个子串,谢谢,这是正确的。然而,当我尝试这个:x时,我已经编辑了答案。我们需要使用更精确的求反字符类[^#\\s]
,或者切换到只允许[a-zA-Z0-9]
的\\w
。或者甚至允许任何内容,除了空白:。谢谢!我可以确认答案是完美的,并提供了几个微调选项,因此我非常感谢。非常感谢。