解读一个简单的正则表达式

时间:2014-02-21 08:59:54

标签: regex

有问题的正则表达式是

(\d{3,4}[.-]?)+

示例文本

707-7019-789

到目前为止我的进展

(            )+  a capturing group, capturing one or more
 \d{3,4}         digit, in quantities 3 or 4
        [.-]?    dot (or something) or hyphen, in quantities zero or one <-- this is the part I'm interested in

根据我的理解,这应该匹配3位或4位数字,后跟一个点(或任何东西,因为点匹配任何东西)或连字符,捆绑在一个组中,一次或多次。为什么这不符合

707+123-4567

然后?

3 个答案:

答案 0 :(得分:7)

字符组.中的

[]只是文字.,它没有“任何”的特殊含义。 [.-]?表示“点或连字符或无”,因为?使整个组成为可选组。

答案 1 :(得分:1)

括号删除了点的功能。 括号表示“范围”/“字符类”。 因此,您说从列表/范围/字符类中选择.- 你不是说从“任何东西”列表中选择 - (任何东西都是常规的含义。)

答案 2 :(得分:1)

[.-]?

字面意思是什么:

字符类[.-]

  • 从以下字符中仅匹配一个.-字面意思。

懒惰量词?

  • 重复最后一个令牌0到1次,尽可能少