我刚从一本关于Ruby语言中正则表达式的书中学到了什么。我做了谷歌,但仍然对{x}
和{x,y}
感到困惑。
这本书说:
{x}→匹配前一个字符的x次出现 {x,y}→匹配至少x次出现和最多y次出现。
任何人都可以更好地解释这一点,或提供一些例子吗?
答案 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.