1

我想要一个匹配RACEor字符串RACE_1但不匹配RACE_2and的正则表达式RACE_3。我在Rubular上已经有一段时间了,现在试图弄清楚,但似乎无法满足我需要的所有条件。帮助表示赞赏。

4

4 回答 4

3
/^RACE(_1)?$/

此处为 Rubular 示例

于 2013-02-27T21:42:59.033 回答
3
RACE(_1)?\b

\b 表示单词的结尾,这会阻止匹配 RACE_2 中的 RACE。

于 2013-02-27T21:43:31.387 回答
2

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

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

于 2013-02-27T21:42:48.990 回答
1

/RACE(?!_)|RACE_1/

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

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

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

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

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

于 2013-02-27T21:40:02.673 回答