gsub R 中维度的重复模式
gsub a repetitive pattern of dimensions in R
我想要 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
来匹配字符(.*
)后跟一个或多个数字(\d+
)后跟空格(\s+
)并替换它空白 ("
)
sub(".*\d+\s+", "", v1)
#[1] "inch box" "pipe" "asd"
模式的一部分可以用量词重复。如果您需要量化一组模式,请使用 分组结构 并将量词应用于该结构。
您可以使用
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"
另一种正则表达式,将数字“\d”和 "x" 分组,允许缺少带有“?”的某些字符以及用“*”丢失最后一位数字的可能性用“()+”包裹这个模式允许模式无限期地重复。
sub("(\d+ ?x ?\d* ?)+", "", x)
[1] "inch box" "pipe" "asd"
我想要 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
来匹配字符(.*
)后跟一个或多个数字(\d+
)后跟空格(\s+
)并替换它空白 ("
)
sub(".*\d+\s+", "", v1)
#[1] "inch box" "pipe" "asd"
模式的一部分可以用量词重复。如果您需要量化一组模式,请使用 分组结构 并将量词应用于该结构。
您可以使用
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"
另一种正则表达式,将数字“\d”和 "x" 分组,允许缺少带有“?”的某些字符以及用“*”丢失最后一位数字的可能性用“()+”包裹这个模式允许模式无限期地重复。
sub("(\d+ ?x ?\d* ?)+", "", x)
[1] "inch box" "pipe" "asd"