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