我需要在R中的字符串中的一个独特字符(在我的情况下:&)之前和之后得到单词。
我需要从这样的东西得到'word1': “......某事word1& word2 something ......”
我在R中使用Perl正则表达式后可以得到这个词:(?<=& )[^ ]*(?= )
(它似乎按照我想要的方式行事。我通过梳理我在本网站上找到的答案得到了它)
我现在需要在&
符号前面加上单词。单词的长度发生变化,其他前面单词的数量以及空格也会发生变化。第一个字可以是字母和数字,只是被两边的空格所限制。
答案 0 :(得分:15)
如果您使用(\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
。
答案 1 :(得分:5)
(?<=&)(\w*)(?=&)"
将匹配&
符号之间的任何单词字符。使用积极的外观和积极的前瞻。
答案 2 :(得分:2)
\b(.*?)\b&
该单词将在第1组中捕获。这是一个不情愿的匹配包含在由两个边界包围的任何字符串中;在第二个边界之后是&
。
答案 3 :(得分:1)
可以使用gsubfn package中的strapplyc
使用相对简单的正则表达式来完成。假设s
是你的字符串:
library(gsubfn)
strapplyc(s, "(\\w+) & (\\w+)")