我需要在R中的字符串中的唯一字符(在我的情况下为&)之前和之后得到单词。
我需要从这样的东西中获取“ word1”:
“ ...有些东西单词1和单词2东西...”
在R中使用Perl正则表达式后,我可以得到单词:(?<=& )[^ ]*(?= )
(它的行为似乎是我想要的方式。我是从梳理在此站点上找到的答案中得到的)
现在,我需要获取&
符号前面的单词。单词的长度会发生变化,其他前一个单词的数目以及空格也会发生变化。单词一可能是字母和数字,两边都用空格隔开。
最佳答案
如果使用(\S+)\s*&\s*(\S+)
,则将捕获&
两侧的单词。这允许在“与”号周围使用可选的空格。
您需要将R字符串中的反斜杠加倍,并使用regexec
和regmatches
函数应用模式并提取匹配的子字符串。
string <- "...something something word1 & word2 something..."
pattern <- "(\\S+)\\s*&\\s*(\\S+)"
match <- regexec(pattern, string)
words <- regmatches(string, match)
现在,
words
是一个包含三个项目向量的单元素列表:整个匹配的字符串,后跟第一个和第二个反向引用。因此,words[[1]][2]
是word1
,words[[1]][3]
是word2
。