gpt4 book ai didi

java - 用户将输入一些过滤条件——我怎样才能把它变成 String.match 的正则表达式

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

我有一个程序,用户将在其中输入一个字符串,例如PropertyA = "abc_*" 我需要让星号匹配任何字符。

在我的代码中,我获取属性值并将 PropertyA 替换为实际值。例如,它可以是 abc_123。我还将相等符号提取到一个变量中。

它应该能够涵盖这种类型的标准

PropertyB = 'cba'

PropertyC != '*-this'

valueFromHeader 是左侧,value 是右侧。

if (equality.equals("=")) {
result = valueFromHeader.matches(value);
} else if (equality.equals("!=")) {
result = !valueFromHeader.matches(value);
}

编辑:

现有代码对正则表达式进行了这种类型的替换

    final String ESC = "\\$1";
final String NON_ALPHA = "([^A-Za-z0-9@])";
final String WILD = "*";
final String WILD_RE_TEMP = "@";
final String WILD_RE = ".*";
value = value.replace(WILD, WILD_RE_TEMP);
value = value.replaceAll(NON_ALPHA,ESC);
value = value.replace(WILD_RE_TEMP, WILD_RE);

它不喜欢这里的下划线...

abcSite_123 != abcSite_123 (evaluates to true)
abcSite_123$1.matches("abcSite$1123")

它不喜欢下划线...

最佳答案

*替换为.*..

value=value.replace("*",".*");//replace  * with .*

如果您的值包含 +,?,这将不起作用,因为它们在正则表达式中都有特殊含义。如果它们存在,请将它们转义..

关于java - 用户将输入一些过滤条件——我怎样才能把它变成 String.match 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452238/

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