繁体   English   中英

正则表达式问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM