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

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

下面是我要拆分的字符串:

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

这就是我迄今为止所try 的.除了两个空的子字符串外,它生成所需的输出.

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

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

我如何go 掉空的子字符串?

推荐答案

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

在匹配:之前,可以使用否定字符类排除匹配冒号或逗号

[^:,\n]+:.*?(?=,(?:\w|$))

Explanation

  • [^:,\n]+个匹配1+字符,而不是: ,或换行符
  • :匹配冒号
  • .*?尽可能匹配任何字符
  • (?= Positive lookahead, assert that what is directly to the right from the current position:
    • ,场比赛
    • (?:\w|$)匹配单个单词字符,或断言字符串的结尾
  • )关闭前瞻

R demo.com/r/3lycNW/1" rel="nofollow noreferrer">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相关问答推荐

无法在我的情节中表现出显着的差异

如何删除多个.CSV文件的行

R创建一个数据透视表,计算多个组的百分比

名称输出pmap on tible

在R中创建一个包含转换和转换之间的时间的列

将非重复序列高效转换为长格式

在R中,如何在每个堆叠的条上放置误差条,特别是当使用facet_grid时?

如何在所有绘图中保持条件值的 colored颜色 相同?

将小数分隔符放在R中的前两位数字之后

当我们有多个反斜杠和/特殊字符时使用Gsubing

汇总数据的Sheffe检验的P值(平均值和标准差)

有没有办法一次粘贴所有列

我是否可以使用多个变异项来构建顺序列(标记多个问题)

变异以按组从其他列创建具有最大和最小值的新列

如何将图例文本添加到图例符号中

使用显式二元谓词子集化sfc对象时出错

根据向量对列表元素进行排序

为什么R列名称忽略具有指定名称的向量,而只关注索引?

在具有条件的循环中添加行

R中刻面网格中的排序条形图