r - 在 R 中拆分逗号和分号分隔的字符串

标签 r regex string pattern-matching string-matching

我正在尝试拆分包含两个条目的字符串,每个条目都有特定的格式:

  • 类别(例如 active site/region)后跟 :
  • 术语(例如 His、Glu/nucleotide-binding motif A)后跟 ,

这是我要拆分的字符串:

string <- "active site: His, Glu,region: nucleotide-binding motif A,"

到目前为止,这是我尝试过的。除了两个空子字符串外,它会产生所需的输出。

unlist(str_extract_all(string, ".*?(?=,(?:\\w+|$))"))

[1] "active site: His, Glu"              ""                                   "region: nucleotide-binding motif A"
[4] "" 

如何去掉空子串?

最佳答案

你得到空字符串是因为 .*? 也可以匹配空字符串,其中断言 (?=,(?:\\w+|$)) 是是的

您可以在匹配 :

之前使用否定字符类排除匹配冒号或逗号
[^:,\n]+:.*?(?=,(?:\w|$))

解释

  • [^:,\n]+ 匹配除 : , 或换行符以外的 1+ 个字符
  • :匹配冒号
  • .*? 尽可能匹配任何字符
  • (?= 正面前瞻,断言当前位置的右边是什么:
    • , 字面匹配
    • (?:\w|$) 匹配单个单词字符,或断言字符串结尾
  • ) 关闭前瞻

Regex demo | R demo

string <- "active site: His, Glu,region: nucleotide-binding motif A,"
unlist(str_extract_all(string, "[^:,\\n]+:.*?(?=,(?:\\w|$))"))

输出

[1] "active site: His, Glu"              "region: nucleotide-binding motif A"

关于r - 在 R 中拆分逗号和分号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71979105/

相关文章:

c# - 正则表达式:如何获取没有前导数字的文件名?

r - 根据另一个 data.table 的行提取 data.table 的行

r - 在 R 中有效地填充平均值旁边的值

r - 如何手动将图例添加到 ggplot 对象

xml - Xpath:紧跟在元素后面的第一个字母/字符串

java - Java中统计字符串出现的次数

python - 使用 re 在 python 中匹配数字

R:xtable 中的对角线列名

mysql - MYSQL 查询中的 REGEX 查找字符串

regex - 我需要一个正则表达式来匹配字符串的第一句话