私の正規表現に問題があります。私は、ArrayListの外のすべての私の正規表現を取得し、それをコンパイルし、一致を検索するには、次のコードを使用:ファイルからの文字列読み込みと文字列リテラルの比較
public boolean match(String command){
for (String regex : regexA) {
System.out.println(regex);
Pattern regPatter = Pattern.compile(regex);
Matcher regMatcher = regPatter.matcher(command);
if(regMatcher.find())
return true;
}
return false;
}
私はそのようにそれをテスト:
public static void main(String[] args){
RegexMatcher reg = new RegexMatcher(new File("C:\\Users\\XXX\\Desktop\\regex.txt"));
System.out.println(reg.match("password cisco"));
}
それは次のように返します。
pas[a-z]\\s*\\w+
er\\w*\\s+(?!s).*
us[a-z]*\\s+((?!cisco).)*$
tr[a-z]*\\s+i[a-z]*\\s+\\w*\\s*
f[a-z]*\\s+f.*\\s*
en[a-z]*\\s+v.*
false
false
を返します。しかし、私はそれは違うそれが動作するように行う場合:
public boolean match(String command){
Pattern regPatter = Pattern.compile("pas[a-z]\\s*\\w+");
Matcher regMatcher = regPatter.matcher(command);
if(regMatcher.find())
return true;
return false;
}
だから私の問題は、私はPattern.compile()
に直接文字列を入力した場合、それは動作しますが、私は私のmatch()
方法で好きならば、それは動作しません。
です"RegexMatcherの違いは" Java正規表現の問題 "ではなくPattern.compile()です。これは他の人があなたの質問と答えを見つけるのに似た問題を持つのに役立ちます。 –
次回はお知らせします。情報ありがとうございます。 :) – KingAnjrey
あなたはまだそれを変更することがあります、私は思う... –