2
以下正则表达式做什么?涉及数字和空格的正则表达式c#
\d{1,3}.?\d{0,3}\s[0-9a-zA-Z. -]{4,40}
我知道d是数字,但是1,3是做什么的。
如果某人可以解释进一步以及将被理解
以下正则表达式做什么?涉及数字和空格的正则表达式c#
\d{1,3}.?\d{0,3}\s[0-9a-zA-Z. -]{4,40}
我知道d是数字,但是1,3是做什么的。
如果某人可以解释进一步以及将被理解
{n,m}
是量词意为“至少n次,至多m次”。与所有量词一样,它默认为贪婪,对于支持它们的正则表达式,它也有懒惰和占有的版本(分别为{n,m}?
和{n,m}+
-.NET支持前者,但不支持后者)。
如果没有指定n
,则为0;如果没有指定m
,则它是无限的。
这意味着你可以 “重写” 经典*
,+
和?
使用这个量词:
*
是{0,}
;+
是{1,}
;?
是{0,1}
。(注意:我认为在.?
的.
本来是一个字面点,这意味着它应该被转义,即\.?
;在正则表达式的点意味着“任何字符”,除了在字符类。)
至于正则表达式本身:
\d{1,3} # match a digit, one to three times, followed by
.? # any character, 0 or one time (see my remark), followed by
\d{0,3} # a digit, zero to three times, followed by
\s # a space character, followed by
[0-9a-zA-Z. -] # a digit, or any letter, or a dot, or a space, or a hyphen,
{4,40} # 4 to 40 times
最后,应该指出的是,在\d
.NET语言本身并不限于0-9,它可以匹配其他Unicode的数字。
编辑:正则表达式,固定,考虑到@阿兰·摩尔的评论,应该是:
\d{1,3}(\.\d{1,3})?\s[0-9a-zA-Z. -]{4,40}
也许这正则表达式应该被固定,太......不过,这只是一个猜测。
我认为你说得对点。事实上,我认为它和数字的第二组意味着是一实数的任选小数部分,所以除非是点(并且反之亦然)的数字应该不存在:'\ d {1,3} ' – 2012-01-13 22:36:23
@AlanMoore好点...我怀疑它,但缺乏上下文中猜测游戏(\ \ d {1,3});?)我想你是对的,但。 – fge 2012-01-13 22:39:47