2

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

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

它应该能够涵盖此类标准

属性B = '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")

它不喜欢下划线...

4

1 回答 1

2

替换*.*..

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

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

于 2013-10-18T14:40:29.873 回答