0

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

书上说:

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

谁能更好地解释这一点,或提供一些例子?

4

4 回答 4

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/
于 2013-07-24T09:11:29.547 回答
1

Limiting Repetition很好的在线教程。

于 2013-07-24T09:11:21.397 回答
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 个单词字符长,并且一个单词字符不跨越空格,因此它不能延续到第二个单词。

于 2013-07-24T09:26:49.780 回答
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.

也可以看看

于 2013-07-24T12:00:48.613 回答