有人能用{x}和{x,y}给我一个正则表达式的例子吗?

时间:2013-07-24 09:06:25

标签: ruby regex

我刚从一本关于Ruby语言中正则表达式的书中学到了什么。我做了谷歌,但仍然对{x}{x,y}感到困惑。

这本书说:

  

{x}→匹配前一个字符的x次出现   {x,y}→匹配至少x次出现和最多y次出现。

任何人都可以更好地解释这一点,或提供一些例子吗?

4 个答案:

答案 0 :(得分:2)

当然,看看这些例子:

http://rubular.com/r/sARHv0vf72

http://rubular.com/r/730Zo6rIls

/a{4}/

是:

的简短版本
/aaaa/

它说:匹配'a'的确切4(连续)字符。

,其中

/a{2,4}/

说:匹配至少2个,最多4个字符'a'。

它将匹配

/aa/
/aaa/
/aaaa/

且不匹配

/a/
/aaaaa/
/xxx/

答案 1 :(得分:1)

Limiting Repetition良好的在线教程。

答案 2 :(得分:1)

我强烈推荐regexbuddy.com,非常简短,下面的正则表达式就是你所指的:

[0-9]{3}|\w{3}

[]字符表示您必须匹配0到9之间的数字。它可以是任何内容,但[]是字面匹配。带有3内部的{}表示在0到9之间匹配3个数字的集合是一个或声明。 \ w,是任何单词字符的简写,再次{3}只返回3个单词。

如果您转到RegexPal.com,您可以输入上面的代码并进行测试。我使用以下数据来测试表达式:

909 steve kinzey

表达式匹配909,'ste','kin'和'zey'。它与've'不匹配,因为它只有2个字符长,而且一个单词字符不会跨越空格,所以它无法转移到第二个单词。

答案 3 :(得分:1)

间隔表达式

GNU awk在其手册的Regexp Operators部分将这些称为“区间表达式”。它解释了如下表达式:

  

{N}
  {N,}
  {N,M}
  大括号内的一个或两个数字表示区间表达式。如果大括号中有一个数字,则前面的正则表达式重复n次。如果有两个数字用逗号分隔,则前面的正则表达式重复n到m次。如果有一个数字后跟逗号,则前面的正则表达式至少重复n次:

本手册还包括以下参考示例:

wh{3}y
    Matches ‘whhhy’, but not ‘why’ or ‘whhhhy’.
wh{3,5}y
    Matches ‘whhhy’, ‘whhhhy’, or ‘whhhhhy’, only.
wh{2,}y
    Matches ‘whhy’ or ‘whhhy’, and so on.

另见