regex - strsplit 使用正则表达式返回空字符串

标签 regex r

在 R 中,我有一个变量 Author,其值为“(Bernoulli)Cuatrec”。

我只想拥有名称,因此我使用以下正则表达式:

L <- strsplit(Author,"[()]")

但这给了我 3 个字符串作为结果:

""          "Bernoulli" "Cuatrec."

如何才能只包含两个名称,而不是空字符串?

PS:我的实际正则表达式更复杂,这里进行了简化。

最佳答案

在下面的解决方案中设置rmCharssplitChars (对于第一个解决方案)和 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/

相关文章:

java - 删除所有空行

r - 在不加载的情况下列出 R 数据文件的内容

r - 如何在 R 中显示或打印环境内容

r - 为什么在将点传递给 purrr 中的映射函数时需要引用或取消引用点?

r - 如何使用 stat_smooth 在一个双因素图上显示一行?

替换 R 中矩阵中的非对角线元素(希望这次问得更好)

r - 如何动态获取关键字周围的单词?

JavaScript Regex Exclude + Include 模式匹配

ruby - 如何使用正则表达式用逗号分隔字符串(括号内除外)?

javascript - 城市 FR 格式化箱