解释这个R正则表达式

时间:2012-04-15 16:37:15

标签: regex r

最近这里有一个R问题由mrdwab回答,它使用了非常酷的正则表达式(LINK)。我喜欢这个反应,但不能概括它,因为我不明白发生了什么(我被提供的不同数值愚弄了,但这并没有真正产生任何有用的东西)。有人可以一块一块地打破正则表达式并解释发生了什么吗?

x <- c("WorkerId", "pio_1_1", "pio_1_2", "pio_1_3", "pio_1_4", "pio_2_1", 
"pio_2_2", "pio_2_3", "pio_2_4")

gsub("([a-z])_([0-9])_([0-9])", "\\1_\\3\\.\\2", x)  #Explain me please

提前谢谢。

1 个答案:

答案 0 :(得分:11)

如果你有一个字符,两个数字用下划线分隔(例如,a_1_2),正则表达式将选择匹配的字符和数字,并使它们可用作变量。 \\1\\2\\3引用原始表达式中匹配的参数:

\\1 <- a
\\2 <- 1
\\3 <- 2

上面运行gsub的结果是搜索表达式中的匹配项,并按数字的顺序翻转数字的顺序。因此,例如,a_1_2将成为a_2.1

"\\1_\\3\\.\\2"
#  a_  2  .  1
相关问题