gpt4 book ai didi

java - 另一个 Java RegEx 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:40 24 4
gpt4 key购买 nike

我有以下代码:

public static void main(String[] args){
StringBuilder content = new StringBuilder("abcd efg h i. - – jk(lmn) qq zz.");
String patternSource = "[.-–]($| )";
Pattern pattern = Pattern.compile(patternSource);
Matcher matcher = pattern.matcher(content);
System.out.println(matcher.replaceAll(""));
}

其中 patternSource 字符类由点、减号和\u2013 字符(类似于长破折号)组成。在执行时给我

abcefi-  jk(lmn) qzz

如果我以任何方式改变字符类中符号的顺序,它就会开始正常工作,并给出

abcd efg h i jk(lmn) qq zz

什么鬼?

在 JDK/JRE 1.6.0_23 下测试

最佳答案

如果您在字符类中有一个未转义的连字符,它作为字符范围具有特殊含义:例如[A-Z]表示A到Z之间的所有字符。

一个异常(exception)是当连字符位于字符类的开头或结尾时,在这种情况下它会按字面意思处理并且只匹配一个连字符。

关于java - 另一个 Java RegEx 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954183/

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