gpt4 book ai didi

java - 正则表达式给出错误

转载 作者:行者123 更新时间:2023-11-29 04:04:43 27 4
gpt4 key购买 nike

继续发表在 Regular expression to allow a set of characters and disallow others

有人知道为什么会出现下面的情况吗?

创建正则表达式时出现以下错误:

[^@*–’”“\r\nœçsÇSgGšcrŠRNEŽDTCnežuUIti—¿„”]+ 

并在输入字段中输入任何这些受限字符

java.lang.ArrayIndexOutOfBoundsException
at org.apache.regexp.RECompiler$RERange.delete(RECompiler.java:1326)
at org.apache.regexp.RECompiler$RERange.remove(RECompiler.java:1417)
at org.apache.regexp.RECompiler$RERange.include(RECompiler.java:1459)
at org.apache.regexp.RECompiler$RERange.include(RECompiler.java:1470)
at org.apache.regexp.RECompiler.characterClass(RECompiler.java:699)
at org.apache.regexp.RECompiler.terminal(RECompiler.java:863)
at org.apache.regexp.RECompiler.closure(RECompiler.java:942)
at org.apache.regexp.RECompiler.branch(RECompiler.java:1151)
at org.apache.regexp.RECompiler.expr(RECompiler.java:1203)
at org.apache.regexp.RECompiler.compile(RECompiler.java:1281)
at org.apache.regexp.RE.(RE.java:495)
at org.apache.regexp.RE.(RE.java:480)

但是这个表达式工作得很好

[^@*–’”“\r\nœçsÇSgGšcrŠRN]+

此外,

[^@*–’”“\r\nœçsÇSgGšcrŠR„”]+ 

有效但是

[^@*–’”“\r\nœçsÇSgGšcrŠRNE]+ 

不起作用并出现上述错误。

是否有像上面那样可以禁止的字符数限制?

问候,向南

最佳答案

破折号(减号)在字符类中有特殊含义。它定义了连续字符的范围,例如 "a-z"

"*–'" 可能存在连续范围,但我想这不是您的意图。您可能想要字面上的破折号,我怀疑您看到的异常与此有关。

取而代之的是:

[^@*–’”“\r\nœçsÇSgGšcrŠRNEŽDTCnežuUIti—¿„”]+
----^ (this is the error)

尝试:

[^@*’”“\r\nœçsÇSgGšcrŠRNEŽDTCnežuUIti—¿„”–]+
-----------------------------------------^ (this okay)

[-^@*’”“\r\nœçsÇSgGšcrŠRNEŽDTCnežuUIti—¿„”]+
-^ (this okay as well)

[^@*\–’”“\r\nœçsÇSgGšcrŠRNEŽDTCnežuUIti—¿„”]+
----^^ (this okay as well)

关于java - 正则表达式给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709195/

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