2

ユーザーが次のような文字列を入力するプログラムがあり 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")

アンダースコアが気に入らない...

4

1 に答える 1

2

..*に置き換えます。.*

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

これらはすべて正規表現で特別な意味を持つため+、値に が含まれている場合、これは機能しません。?

于 2013-10-18T14:40:29.873 に答える