簡體   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