gpt4 book ai didi

java - java中有没有办法有选择地转义一些特殊字符

转载 作者:行者123 更新时间:2023-11-30 02:40:16 26 4
gpt4 key购买 nike

我有一个模式存储在文本文件中,我正在从文件中读取并使用该模式来匹配字符串。

示例:/abc/def[\d]/ghi

现在我希望它应该与 /abc/def[1]/ghi/abc/def[2]/ghi

匹配

如果我使用 Pattern.quote("/abc/def[\d]/ghi"),它会将整个输入视为文字,因此只有与它匹配的字符串是 "/abc/def[\d]/ghi”

所以我必须将模式保存在 /abc/def\[\d\]/ghi 这样的文件中,这样我就失去了可读性。

有什么方法可以专门转义几个字符,就像在我的例子中,我希望 '\d' 具有特殊含义,但不希望 '[]' 具有特殊含义。

最佳答案

为了获得所需的匹配,您的模式必须看起来像

\[\d\]

最后。但为了使内容更具可读性,请考虑使用方法来构建此类模式表达式,而不是将它们硬编码为文字,例如:

String encloseInSquareBrackets(String pattern) {
return "\[" + pattern + "]";
}

...
String pattern = "/abc/def" + encloseInSquareBrackets("\d")+ "/ghi";
例如。是的,这意味着需要阅读更多文本,但假设您花了一些时间来想出好的方法名称,这将使您的模式定义更易于阅读/理解。

人们甚至可以更进一步,创建一些“RegexBuilder”类,它提供了一组很好的此类方法;允许流畅的界面。

关于java - java中有没有办法有选择地转义一些特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41951911/

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