【发布时间】:2015-10-01 11:28:22
【问题描述】:
我需要找到一个正则表达式,它可以让我找到包含所有必需数字但只有一次的字符串。
例如:
a <- c("12","13","112","123","113","1123","23","212","223","213","2123","312","323","313","3123","1223","1213","12123","2313","23123","13123")
我想得到:
"123" "213" "312"
模式 123 只出现一次,并且以任意顺序和字符串的任意位置出现
我尝试了很多东西,这似乎离我想要的还很远:
grep('[1:3][1:3][1:3]', a, value=TRUE)
[1] "113" "313" "2313" "13123"
【问题讨论】:
-
使用 POSIX 正则表达式,您只能指定所有排列。
-
相关:stackoverflow.com/questions/3101366/…(实际上是重复的,但如果你使用 pcre 正则表达式)
-
我认为更简单的正则表达式可以完成这项工作:
grep('^[123]{3}$', a, value=TRUE)- 它将找到所有包含1、2或3数字的 3 位数字。 -
grep('^(?!.*(.).*\1)[123]{3}', a, value=TRUE, perl=T) -
非常感谢您的快速回复。我真正需要的是找到包含 1 2 和 3 位的所有 3 位数字