使regexp更短

时间:2011-04-16 14:06:07

标签: ruby regex simplification

我有以下文字:var avarb avar var varb var。我想要做的只是提取“直接”var次出现。上面的字符串包含3个。

在玩rubular时,我制作了以下Regexp:/\A(var)|\s(var)\s|(var)\z/。 有没有办法简化它,只在regexp中使用var子字符串一次?

4 个答案:

答案 0 :(得分:5)

使用单词边界尝试这个:

 /\bvar\b/

答案 1 :(得分:1)

使用Alexanders版本或

/(^|\s)(var)($|\s)/       # or:
/(?:^|\s)(var)(?:$|\s)/   # (?: ) will prevent capturing 

答案 2 :(得分:0)

/\s+(var)\+/似乎足够了吗?

答案 3 :(得分:0)

如果我理解正确,你可以使用前瞻和后视:

/(?<=^|\s)(var)(?=$|\s)/