gpt4 book ai didi

java - Java 中无法转义右括号?

转载 作者:行者123 更新时间:2023-12-01 18:14:32 25 4
gpt4 key购买 nike

我有一个很长的正则表达式,似乎有问题,但仅当从文本文件导入时才会出现问题。我已将其范围缩小到以下部分(此处显示为文字字符串):

"(?i)(?<!\\w)\\w{2,3}(?=\\))"

正如您所看到的,在接近尾声时,我试图逃避右括号以进行前瞻。现在,如果这是硬编码的,例如:

Pattern myPattern = Pattern.compile("(?i)(?<!\\w)\\w{2,3}(?=\\))");

它完全按照预期工作。但是,如果我从文本文件中读取它,例如:

File patternFile = new File("patterns.txt");
List<String> patternText = FileUtils.readLines(patternFile);
String ucText = patternText.get(0).trim();
Pattern myPattern = Pattern.compile(ucText);

然后我收到错误消息:

Exception in thread "Thread-4" java.util.regex.PatternSyntaxException: Unmatched closing ')' near index 25
(?i)(?<!\\w)\\w{2,3}(?=\\))
^

那么,为什么会发生这种情况呢?为什么在硬编码时转义右括号是合法的,但在从文本文件读取时却不行?

最佳答案

您正在编写 Java 字符串文字。 \) 不是 Java 字符串文字的合法转义代码。

您需要使用 \\ 转义每个反斜杠,以便为正则表达式创建带有单个反斜杠的字符串。

关于java - Java 中无法转义右括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30492908/

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