4

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

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

先感谢您。

4

1 回答 1

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
于 2012-04-15T16:41:32.343 回答