4

最近、ここで 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

前もって感謝します。

4

1 に答える 1

11

アンダースコアで区切られた文字と 2 つの数字 (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 に答える