R中的Regex:从文本中获取关键字列表

时间:2017-03-02 15:31:26

标签: r regex

我想使用正则表达式来获取文本中的关键字列表。如果文字说

This is a random text Keywords a, b, c Hi stack overflow 要么 Hi stackoverflow Keywords: a, b, Stack Overflow Some more text

我想提取

a, b, ca, b, Stack Overflow

我尝试了以下正则表达式:

.*?(?:Keywords:?\s)(.*?,.*?,.*?(?<!,)(?=\s[A-Z])){1,2}.*?$

DEMO:https://regex101.com/r/JKfFLl/9

但是我没有得到第二个字符串的“溢出”部分。我在代码中添加{1,2}的原因是为了确保它还捕获由2个单词组成的关键字,但它不起作用。

1 个答案:

答案 0 :(得分:0)

基于对OP和这个答案的评论;此正则表达式捕获任意数量的,./;分隔关键字,可能包含1或2个单词

https://regex101.com/r/IHPCuN/5

^.*?(?:Keywords(?::|-|--)?)\K((?:(?:\s\w+){1,2}[,.;|])+(?:\s\w+){1,2}).*$

这会在列表的末尾捕获1或2个单词,但在列表末尾与文本的其余部分之间没有任何区别,这将始终捕获2个单词。

注意:\K并非特别必要,但会提高效果。