r - 如何使用正则表达式、单词和或条件从字符串中提取

标签 r regex gsub

我想从字符串中提取一个单词,但不知道如何继续:

假设我有这些字符串:

a_toto_matthew
a_tutu_matthew

在这两种情况下,我都想提取ma​​tthew

我试过了

gsub("^a_[toto|tutu]_(.*)$", "\\1", "a_toto_matthew")

但是这不起作用。 我本可以这样做:

gsub("^a_.*_(.*)$", "\\1", "a_toto_matthew")

但我发现它不太优雅。我想知道在正则表达式中提及“toto”或“tutu”的语法

预先感谢您的指导,

马修

最佳答案

另一个选项可以是使用匹配 u 或 o 的捕获组和反向引用,并且对于单词使用 \w+ 或匹配除下划线之外的任何单词字符。

^a_t([uo])t\1_([^\W_]+)$

Regex demo

在替换使用组2中

关于r - 如何使用正则表达式、单词和或条件从字符串中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60206212/

相关文章:

r - 在所有变量中应用 `dplyr::rowwise`

php - 如何用段落标签包围所有文本片段?

c# - 正则表达式 - 小写字母数字和正斜杠

ruby - 为什么我不能用 gsub 替换字符串中的 '\\+'?

r - 计算 R 中每行中特定列的下 3 行的最大值

r - 与 S4 类相比,使用 setOldClass 时重载运算符无法按预期工作

R:带有自定义 x 轴范围的自定义中断的直方图

Java/Hive 正则表达式解释

r - gsub R 中维度的重复模式

r - 使用 gsub 在字符串中仅保留字母数字字符和空格