我想gsub
在河中的字符串提到例如尺寸的模式:GSUB尺寸R中的重複圖案
"16 x 13 x 12 inch box"
"1x2x3 pipe"
"123x 23 x334 asd"
預期輸出:
"inch box"
"pipe"
"asd"
什麼我有到目前爲止這個表達式是:[0-9]*\\s*x\\s*
。我怎樣才能使它成爲重複的模式匹配?
我想gsub
在河中的字符串提到例如尺寸的模式:GSUB尺寸R中的重複圖案
"16 x 13 x 12 inch box"
"1x2x3 pipe"
"123x 23 x334 asd"
預期輸出:
"inch box"
"pipe"
"asd"
什麼我有到目前爲止這個表達式是:[0-9]*\\s*x\\s*
。我怎樣才能使它成爲重複的模式匹配?
更換圖案的一部分可以用量詞重複。如果您需要量化一組模式,請使用分組結構並將量詞應用於結構。
您可以使用
sub("^[0-9]+(?:\\s*x\\s*[0-9]+)+\\s*", "", x)
詳細
^
- 字符串的開始[0-9]+
- 1個或多個數字(?:
- 符合以下連續子模式的非捕獲基團的啓動:
\\s*
-0+空格x
- 一個x
\\s*
-0+空格[0-9]+
)+
- ... 1次或更多次\\s*
-0+空格。參見R demo: 「?」
x <- c("16 x 13 x 12 inch box", "1x2x3 pipe", "123x 23 x334 asd")
sub("^[0-9]+(?:\\s*x\\s*[0-9]+)+\\s*", "", x)
## => [1] "inch box" "pipe" "asd"
我們可以做sub
匹配後面緊跟着空格(\\s+
)一個或多個數字(\\d+
)字符(.*
)和空白("
)
sub(".*\\d+\\s+", "", v1)
#[1] "inch box" "pipe" "asd"
備選的正則表達式的是基團數 「\ d」 和 「x」 允許在缺乏與某些字符的以及用「*」丟失最後一位的可能性,這個模式用「()+」進行包裝可以使模式無限重複。
sub("(\\d+ ?x ?\\d* ?)+", "", x)
[1] "inch box" "pipe" "asd"