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