[英]regex match is not as i expect
在下面給出的匹配項中:為什么第一個匹配項給出了輸出...,而在第二個匹配項中,為什么'-'與目標不匹配?
Index: 01234567890123456789012345678
Target: whois who? Who me? Who else?
Pattern: (^[a-z])|(\?$)
Match: (0,0:w)(28,28:?)
Index: 01234567890
Target: \-^$.?*+()|
Pattern: [\\-^$.?*+()|]
Match: (0,0:\)(2,2:^)(3,3:$)(4,4:.)(5,5:?)(6,6:*)(7,7:+)(8,8:()(9,9:))(10,10:|)
編輯:-
感謝您詢問代碼
請在此處找到代碼: http : //paste.ubuntu.com/11831819/
第一個匹配行/字符串^[az]
開頭的任何字符,以及行/字符串\\?$
末尾的問號,這是因為
在第二個字符中, []表示匹配集合中的字符, -內部表示“之間”,因此匹配其ascii值介於\\ (具有ascii值92)和^ (具有ascii值94)之間的字符,或$。* +()|之一 。 由於的ASCII值-是46,也不會被顯示。
要解決您的問題,您應該引用-
[\\\-^$.?*+()|]
或放在最后
[\\^$.?*+()|-]
。 當然這是重擊,但是:
echo 'begin []\^$.?*+()|- end' | sed -e 's/[][\\^$.?*+()|-]/x/g'
begin xxxxxxxxxxxxx end
我只引用\\
,所有特殊字符均已替換為x
,因為所有其他字符都放置在正確的位置。 如果我移動-
或[
或]
我也必須引用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.