用R中的sub用辅音 - 元音替换第一个元音 - 辅音的出现

时间:2014-03-28 03:34:43

标签: regex r

我知道它应该是这样的,但我肯定在语法中遗漏了一些东西:

yy=sub(r'\b[aeiou][^aeiou]*',r'\b[^aeiou][aeiou]*',"abmmmm")

我希望将“bammmm”作为输出

Error: unexpected string constant in "yy=sub(r'\b[aeiou][^aeiou]*'"

我不确定确切的语法是什么。

请在RStudio或任何R编译器中运行您的代码。我是正则表达式的新手,你给我Python代码不会帮助我理解这种情况。谢谢!

2 个答案:

答案 0 :(得分:4)

这就是你想要的

yy=sub("\\b([aeiou])([^aeiuos])","\\2\\1","abmm")

我会解释它是如何运作的:

  • 如果你让我用任何一个元音元音代替任何元音 - cons元音?这没有多大意义。我应该将ab改为ba,ce还是da?它可以是其中任何一个。你从未在元音 - 元素中的元音和consonent-vowel中的元音之间指定任何关系。因此,在第二个参数中放置正则表达式是没有意义的。因此,您不被允许。
  • 如果你想达到你的要求。您可以在第一个参数中为正则表达式添加括号。第一个(标记组1,第二个(标记组2等(注意,组0是整个匹配的字符串。)您可以在第二个中使用\ 1,\ 2,...将匹配的组放在那里的论据。

答案 1 :(得分:2)

作为使用正则表达式的替代方法,example(strsplit)

中有一个很好的字符串反转函数
> strReverse <- function(x)
      sapply(lapply(strsplit(x, NULL), rev), paste, collapse="")
> dd <- "abmmmm"
> paste(strReverse(substr(dd, 1, 2)), substr(dd, 3, nchar(dd)), sep = "")
[1] "bammmm"
相关问题