正则表达式:匹配独家/或

时间:2013-02-27 21:35:49

标签: ruby-on-rails ruby regex

我想要一个匹配RACERACE_1字符串的正则表达式,但不是RACE_2RACE_3。我已经在Rubular了一段时间,现在试图解决它,但似乎无法满足我需要满足的所有条件。感谢帮助。

4 个答案:

答案 0 :(得分:3)

/^RACE(_1)?$/

Rubular example here

答案 1 :(得分:3)

RACE(_1)?\b

\ b表示单词的结尾,并且阻止在RACE_2中匹配RACE。

答案 2 :(得分:2)

您可以使用: (\bRACE(_[1])?\b)

它需要RACE的一份副本,然后0 -> N _[1]次出现(\bRACE(_[12345])?\b)。在方括号中,您可以包含任何您想要的数字。例: RACE_5将匹配[1245]。如果您希望RACE_1, RACE_2, RACE_4, RACE_5 RACE_3而不是{{1}},则可以对其进行自定义甚至跳过号码。

答案 3 :(得分:1)

/RACE(?!_)|RACE_1/

它有点像黑客,但可能符合您的需求

编辑: 这可能是更具体的一个更好的 /RACE(?!_\d)|RACE_1/

在这两种情况下,您都使用否定前瞻来强制执行_和一个数字后面不能跟随RACE,但是然后使用或后面的语句特别允许它。

此外,如果您计划仅搜索所述匹配的整个单词的实例,请使用\ b前缀/附加以指定单词边界。

/\bRACE(?!_\d)|RACE_1\b/