regex - R:环顾四周

标签 regex r backreference

我需要匹配以两个不同的元音开头的任何“r”。例如,“我们的”或“ pear ”将匹配,但“bar”或“aar”将不匹配。我确实设法匹配了两个不同的元音,但是我仍然无法确定后面的'r'的后向条件(...)。 (?<=...)r...\\Kr均不会产生任何结果。有任何想法吗?

x <- c('([aeiou])(?!\\1)(?=(?1))')
y <- c('our','pear','bar','aar')
y[grepl(paste0(x,collapse=''),y,perl=T)]
## [1] "our"  "pear"`

最佳答案

这两个解决方案似乎有效:

为什么不这样:

x <- '(?<=a[eiou]|e[aiou]|i[aeou]|o[aeiu]|u[aeio])r'
y[grepl(x, y, perl=T)]
\K方式:
x <- '([aeiou])(?!\\1)[aeiou]\\Kr'
y[grepl(x, y, perl=T)]

为什么不这样变体(可能更有效,因为它之前搜索“r”):
x <- 'r(?<=a[eiou]r|e[aiou]r|i[aeou]r|o[aeiu]r|u[aeio]r)'

或快速排除不带两个元音的“r”(无需测试整个交替)
x <- 'r(?<=[aeiou][aeiou]r)(?<=a[eiou]r|e[aiou]r|i[aeou]r|o[aeiu]r|u[aeio]r)'

关于regex - R:环顾四周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29605725/

相关文章:

regex - 我的重定向 301 正则表达式有什么问题?

r - ggplot2 y 轴限制改变绘图

r - 基于 R 中的日期列使用连续日期扩展数据框

linux - 将linux(或R)中的两个文件与一个公共(public)列重复合并

regex - Perl 获取反向引用的计数

php - 正则表达式 - 选择具有多个大写字母的行

python - 正则表达式前瞻和后瞻

javascript - 使用正则表达式选择 2 个完整跨度标签之间的文本

php - preg_replace : add number after backreference

java - 通过 ObjectInputStream 发送时,如何更新对象而不是完全重新写入对象