gpt4 book ai didi

java,正则表达式,需要在正则表达式中转义反斜杠

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:34 24 4
gpt4 key购买 nike

引用以下问题 - String.replaceAll single backslashes with double backslashes

我写了一个测试程序,我发现无论我是否转义反斜杠,结果在这两种情况下都是正确的。这可能是因为-\t 是公认的 Java 字符串转义序列。 (尝试\s 它会提示)。-\t 在正则表达式中被视为文字制表符。我有点不确定原因。

是否有任何关于在 Java 中转义正则表达式的通用指南。我认为使用两个反斜杠是正确的方法。

我还是想知道你的意见。

public class TestDeleteMe {

public static void main(String args[]) {
System.out.println(System.currentTimeMillis());

String str1 = "a b"; //tab between a and b

//pattern - a and b with any number of spaces or tabs between
System.out.println("matches = " + str1.matches("^a[ \\t]*b$"));
System.out.println("matches = " + str1.matches("^a[ \t]*b$"));
}
}

最佳答案

转义序列有两种解释:首先是 Java 编译器,然后是正则表达式引擎。当 Java 编译器看到两个斜杠时,它会用一个斜杠替换它们。当斜杠后面有 t 时,Java 将其替换为制表符;当双斜杠后面有 t 时,Java 不会理会它。但是,由于两个斜杠已被单个斜杠替换,正则表达式引擎会看到 \t,并将其解释为制表符。

我认为让正则表达式将 \t 解释为制表符(即用 Java 编写 "\\t")会更清晰,因为它可以让您看到在调试、记录等过程中以其预期形式显示表达式。如果将 Pattern\t 转换为字符串,您将在正则表达式中间看到一个制表符,并可能将其与其他空格混淆。带有 \\t 的模式没有这个问题:它们会向您显示一个带有单个斜线的 \t,准确告诉您它们匹配的空白类型。

关于java,正则表达式,需要在正则表达式中转义反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9113328/

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