gpt4 book ai didi

java - 替换 Java 中的确切字符串,假设它可能包含特殊的正则表达式字符

转载 作者:行者123 更新时间:2023-11-30 10:00:15 24 4
gpt4 key购买 nike

我有一个字符串输入和字符串模式,并假设它们可以包含所有类型的对正则表达式具有特殊含义的字符,我希望在不对特殊字符给予任何特殊考虑的情况下进行精确的单词替换。应忽略任何特殊含义。 并且在编译时我不知道输入字符串或输入模式中可能存在多少这样的特殊字符。

所以这里是正式的问题陈述:-

假设对象 input_string 是 String 类型的输入。然后我们有另一个字符串 input_pattern,它也是一个 String 类型的对象。

现在我想执行以下操作:-

String result=input_string.replaceFirst(input_pattern,"replacewithsomethingdoesntmatter");

替换应该以“精确”匹配方式进行,如果字符串中存在字符,则不考虑字符的任何正则表达式特殊含义。如何实现?

最佳答案

您可以使用 Pattern.quote()对正则表达式中有特殊含义的字符进行转义的方法:

String pattern = "^(.*)$";
String quotedPattern = Pattern.quote(pattern);

System.out.println(quotedPattern);

这会将模式包裹在引号标记(\Q\E)中,表明包裹的序列需要逐字匹配。

或者,您可以手动将模式用引号括起来:

String pattern = "^(.*)$";
String quotedPattern = "\\Q" + pattern + "\\E";

System.out.println(quotedPattern);

第一种方法可能更安全,因为它还会为已经包含引号的表达式提供便利。

关于java - 替换 Java 中的确切字符串,假设它可能包含特殊的正则表达式字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58162134/

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