gpt4 book ai didi

java - 如何转义所有正则表达式特殊字符但不是一次全部转义(通过 Pattern.quote()),只是一个接一个

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

这就是问题所在:用户会看到一个文本字段,他或她可以在其中键入过滤器。过滤器,用于过滤未过滤的数据。经历 Oracle Forms 洗脑的用户除了 % 之外没有任何特殊字符,我猜它或多或少代表 Java 中的“.*”正则表达式。

如果用户行为良好,给定的人会输入类似“CTHULH%”的内容,在这种情况下我可以构建一个模式:

Pattern.compile(inputText.replaceAll("%", ".*"));

但是,如果用户来自印斯茅斯,他将难以克服地键入“.+\[a-#$%^&*(”,通过几个简单的击键破坏我的方案。这是行不通的:

Pattern.compile(Pattern.quote(inputText).replaceAll("%", ".*"));

因为它将把\Q 放在字符串的开头,而\E 放在字符串的末尾,渲染我的 % -> .* 开关没有实际意义。

问题是:我是否必须查找模式代码中的每个特殊字符并通过在前面添加“\\”来自行转义它,或者这可以自动完成吗?还是我对问题太深入了,以至于忽略了一些明显的解决方法?

最佳答案

我认为这个算法应该适合你:

  • 拆分 %
  • 使用Pattern.quote分别引用每个部分
  • 使用 .* 加入字符串

关于java - 如何转义所有正则表达式特殊字符但不是一次全部转义(通过 Pattern.quote()),只是一个接一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10518781/

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