在 R 中,我有一个变量 Author,其值为“(Bernoulli)Cuatrec”。
我只想拥有名称,因此我使用以下正则表达式:
L <- strsplit(Author,"[()]")
但这给了我 3 个字符串作为结果:
"" "Bernoulli" "Cuatrec."
如何才能只包含两个名称,而不是空字符串?
PS:我的实际正则表达式更复杂,这里进行了简化。
最佳答案
在下面的解决方案中设置rmChars
和splitChars
(对于第一个解决方案)和 chars
(对于第二个解决方案)到表示您需要使用的实际字符集的模式。根据您的单词和非单词,您也许可以使用内置类,例如 chars <- "\\W"
其中设置 chars
所有非单词字符。
1) 删除 ( 先删除 ) 。假设s
是输入字符串:
rmChars <- "[(]"
splitChars <- "[)]"
strsplit(gsub(rmChars, "", s), splitChars)[[1]]
给予:
[1] "Bernoulli" "Cuatrec."
2) 另一种可能性是替换 chars
中的每个字符。留有空格,修剪末端,然后按空格分开。
chars <- "[()]"
strsplit(trimws(gsub(chars, " ", s)), " ")[[1]]
给予:
[1] "Bernoulli" "Cuatrec."
关于regex - strsplit 使用正则表达式返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30981237/