亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在正則表達式中反向引用“內部”選擇(())?

如何在正則表達式中反向引用“內部”選擇(())?

猛跑小豬 2019-11-20 14:45:09
您如何在Regex中回引用內部括號?樣本數據是一個產品價格清單,顯示了基于購買數量的不同價格跌幅。格式為quantityLow-quantityHigh:pricePer;倍數。我使用LINQPad構造了此C#Regex表達式以分離各部分,這顯示了Regex數據分離的便捷可視化。在此示例中,存在“內部”括號(選擇),從而創建了分層數據結構。string mys = "1-4:2;5-9:1.89";Regex.Matches (mys, @"((\d+)[-|\+](\d*):(\d+\.?\d*);?)").Dump();  // Graphically show分解為(比賽就是一切。比賽中,有一個比賽和一個小組比賽。小組比賽中有幾個比賽。)MatchCollection(2個項目)團體收藏(4件)CaptureCollection(1個項目)()組“ 1-4:2;”CaptureCollection(1個項目)()組“ 1”CaptureCollection(1項目)()組“ 4”CaptureCollection(1項目)()組“ 2”CaptureCollection(1項目)()匹配“ 1-4; 2;”團體收藏(4件)CaptureCollection(1項目)()組“ 5-9:1.89”CaptureCollection(1項目)()組“ 5”CaptureCollection(1項目)()組“ 9”CaptureCollection(1項目)()組“ 1.89”CaptureCollection(1項目)()匹配“ 5-9:1.89”僅供參考:()括號組發現了可以由\ 1 .. \ 9引用的結果(我認為)。\ d匹配一個數字。后面的+匹配一個或多個數字。*匹配零個或多個數字后。?之后說這個比賽是可選的。。匹配一個字符。\。在這種情況下,匹配句點或小數
查看完整描述

3 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

只要使用\1... \9(或者$1... $9在一些正則表達式實現)就像你通常會。編號從左到右,基于開放括號的位置(因此,嵌套組的編號要大于嵌套在其中的組的編號)。


查看完整回答
反對 回復 2019-11-20
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

請注意,這是對Zim博士的評論的答復:


“奇怪的是,兩種方法似乎都可以正常工作。我選擇了“ Regulator”,它至少說明了正則表達式是如何分解的。如果它具有設置實現的功能,那么我認為我有業務?!?/p>


但是我的回答對于評論框來說太長了。


不,您不需要轉義加號(在這種情況下為連字符)。在字符類中,以下字符有特殊含義:],^和-。這三個字符是唯一可能需要轉義的字符(請注意,[不需要轉義?。N艺f可能是因為它取決于這些元字符出現的位置。該^只具有特殊的含義(作為否定指標)時,放置在一個字符類的開始,在其他地方,它不需要逃逸,將只匹配文字^。一些例子說明:


[^a]   // special meaning: matches any character except 'a'

[a^]   // matches 'a' or '^'

[\^a]  // matches '^' or 'a'

當連字符不在字符類的開頭或結尾時,連字符僅具有特殊含義(作為范圍指示符)。例子:


[a-c]  // special meaning: matches 'a', 'b' or 'c'

[ac-]  // matches 'a', 'c' or '-'

[-ac]  // matches '-', 'a' or 'c'

[a\-c] // matches 'a', '-' or 'c'

毫無疑問,某些正則表達式實現可能與我剛剛發布的有所不同,但是大多數語言都將遵守這些規則(至少我使用過的所有語言?。?。正如您所注意到的,在字符類中過度轉義字符是安全的:這不會造成任何危害。兩個類[+]和[\+]將匹配文字+。恕我直言,第一個是首選,因為我發現一個正則表達式有太多的轉義字符難以閱讀。但是有些人會不同意我的看法,并發現通過使用轉義符(雖然不是必需的)可以更清楚地知道字面值+是匹配的,而不是貪婪的量詞。


希望這能說明問題。


查看完整回答
反對 回復 2019-11-20
  • 3 回答
  • 0 關注
  • 1117 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號