[英]Regular expression question
在.NET 4.0中,正则表达式是什么,
"^ABC(: ([^=]+(?<! )=(?! )[^,]+(?<! )(,(?! )|$))+)?$"
匹配到?
一些示例示例会很有帮助。
我对以下结果感到非常惊讶。 上面的表达式匹配“ ABC:X = 12,Y = 1.79769313486232E + 308”。 但是对于“ ABC:X = 12,Y = 1,79769313486232E + 308”失败。 唯一的区别是双精度数字的十进制符号。
谢谢。
看看[^,]
,基本上说,后=( =(?! )
匹配任何不具备,
在它。
正则表达式不是很优雅:
甚至像ABC
东西也会匹配。 像ABC: X=1Y=1
这样的东西ABC: X=1Y=1
也可以匹配。 我会说,不要使用它并为您需要的内容组装适当的正则表达式。
你说:
上面的表达式匹配,ABC:X = 12,Y = 1.79769313486232E + 308”,但对于“ ABC:X = 12,Y = 1,79769313486232E + 308”却失败
没有任何上下文,我不确定匹配上述字符串的目的是什么,但是我可以理解为什么匹配第一个而不是第二个是完全合理的。
1.79769313486232E+308
的格式是非常大的科学记数法(+308本质上是指将小数点向右移动308位)。 它是带点的合法数字,但不带逗号。
的确,某些语言环境可以使用逗号而不是点作为小数点,但是科学记法已标准化为使用点,编程语言和其他使用这种格式的数字的计算机应用程序也是如此。强制将其作为点,并防止使用逗号。
为了说明为什么这很重要,如果在此示例中允许使用逗号,则会对Y
的值在何处结束产生歧义,因为逗号已被用于显示X
的值的末尾,使用a用逗号代替Y
中的点会使计算机认为Y
值为1
,这是不正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.