gpt4 book ai didi

java - 正则表达式匹配不符合我的预期

转载 作者:行者123 更新时间:2023-12-01 18:13:21 24 4
gpt4 key购买 nike

在下面给出的比赛中:为什么第一场比赛给出这样的输出......在第二场比赛中为什么'-'与目标不匹配?

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:|)

编辑:-

感谢您询问代码

Please find the code here : http://paste.ubuntu.com/11831819/

最佳答案

第一个匹配行/字符串开头的任何字符 ^[a-z] 以及行/字符串结尾的问号 \?$ ,那是因为

  • ^ 表示行首
  • $ 表示行尾

第二个中的[]表示匹配集合中的字符,里面的-表示“之间”,因此匹配ascii值为介于 \(ascii 值 92)和 ^(ascii 值 94)之间,或 $.*+()| 之一。由于-的ascii值为46,因此不会显示。

要解决您的问题,您应该引用 -

[\\\-^$.?*+()|]

或者放在最后

[\\^$.?*+()|-]

。当然这是 bash 但是:

echo 'begin []\^$.?*+()|- end' | sed -e 's/[][\\^$.?*+()|-]/x/g'
begin xxxxxxxxxxxxx end

所有特殊字符都已替换为 x,而我只引用了 \,因为所有其他字符都放置在正确的位置。如果我移动 -[] 我也必须引用它们。

关于java - 正则表达式匹配不符合我的预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31251498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com