【发布时间】:2021-02-16 10:20:31
【问题描述】:
我希望在R 中使用正则表达式提取出现在一组短语之前的文本。
示例短语c("PHRASE1", "PHRASE2", "PHRASE3")。
示例文本:
*NAME ALPHA PHRASE1 BLA BLA TEXT 81249
*NAME BETA PHRASE1 BLA BLA 81229
*NAME GAMMA PHRASE2 BLA BLA TEXT 85129
*NAME DELTA PHRASE3 BLA BLA 86129
*NAME EPSILON PHRASE2 BLA BLA 81729
我想拉出下面的c("NAME ALPHA", "NAME BETA", "NAME GAMMA")等等(忽略*)。
正则表达式 101 链接:https://regex101.com/r/Fzinr8/1
初步尝试
(!\*)q+(?=PHRASE1)
在R:
str_extract(x, "(!\*)q+(?=PHRASE1)")
【问题讨论】:
-
您的模式中的
q是什么?!\*匹配!*字符串,你的字符串中没有它。请注意,您需要在常规字符串文字中使用双反斜杠来定义文字反斜杠(正则表达式转义部分) -
对不起,我对正则表达式很陌生
-
但是你知道
q匹配q字符吗?你什么意思?在*之后开始尽可能少地匹配任何类型的字符?还是空格分隔的单词序列? -
我试图在
PHRASE1开始之前提取所有字符,所以我想要所有字符q所以我把+ -
试试这个正则表达式:
(?<=\*).*?(?=\s(?:PHRASE1|PHRASE2|PHRASE3))