RegEx以排除以某种模式开头的数字

时间:2017-01-09 16:26:46

标签: r regex posix regex-negation

我有以下数字列表:

5501, 534, 234, 550, 5500

我想选择除" 5501"之外的所有数字。和" 5500"并将其与stringr中的R包一起使用。 我没试好运行以下表达式:

^((?!550)\d)*$ 

3 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

^((?!5501|5500)[0-9]*)$

在上面的正则表达式中观察“Negative Lookahead”命令?!。 这将排除55015500

希望这有帮助

答案 1 :(得分:0)

我们可以使用v1[grep("^.{3}$", v1)] #[1] 534 234 550

v1[grep("^550[01]$", v1, invert=TRUE)]
#[1] 534 234 550

或更具体地说

v1 <-  c(5501, 534, 234, 550, 5500)

数据

{{1}}

答案 2 :(得分:0)

如果只想要消除那两个完全字符串(例如从不5502),则可以使用标准R子集,不需要使用正则表达式。

x <- c(5501, 534, 234, 550, 5500)
x <- x[x != 5500 & x != 5501]

如果您关心所有以550开头的值,而不是那些可能在其他地方使用550的值,那么您可以使用

x<-x[stringi::stri_sub(x, 1,3) != "550"  | x == "550"]