r - 在整个分隔符处分割,但不是分隔符的每个组成部分

标签 r regex

我想分割一个字符串并保留它被分割的位置。

str = 'Glenn: $53  Sutter: $44'
strsplit(str, '[0-9]\\s+[A-Z]', perl = TRUE)
# [[1]]
# [1] "Glenn: $5"  "utter: $44" ## taking out what was matched
strsplit(str, '(?=[0-9]\\s+[A-Z])', perl = TRUE)
# [[1]]
# [1] "Glenn: $5"     "3"             "  Sutter: $44" ## splitting at each component of the match

有没有办法在整个定界符处分割它?所以它返回:

# [1] "Glenn: $53"  "Sutter: $44"

最佳答案

我们可以使用正则表达式环视在大写字母之前和数字之后分割一个或多个空格 (\\s+)

strsplit(str, "(?<=[0-9])\\s+(?=[A-Z])", perl = TRUE)[[1]]
#[1] "Glenn: $53"  "Sutter: $44"

关于r - 在整个分隔符处分割,但不是分隔符的每个组成部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60978174/

相关文章:

r - 如何在 R 中的 ggplot2 中使一条线不可见?

r - 选择满足条件的多列

regex - 多个 Nginx 别名到一个位置

regex - 用 RegEx 和 awk 或 sed 将一些点 (.) 替换为逗号 (,)

R根据另一个数据框中的匹配名称替换列名

R Markdown - 将文本格式化为循环中的标题似乎仅适用于第一次循环迭代

r - R 中更详细的目录列表?

regex - 检查字符串内的值

regex - 如何为具有字母数字字符但不仅仅由数字组成的单词编写正则表达式?

php - 函数 ereg() 已弃用