テキスト内の疑問符(?)と一致するパターンを定義しようとしています。正規表現では、疑問符は「一度かまったくない」と見なされます。 パターンの問題を修正するために、テキストの(?)記号を(\\?)に置き換えることはできますか?
String text = "aaa aspx?pubid=222 zzz";
Pattern p = Pattern.compile( "aspx?pubid=222" );
Matcher m = p.matcher( text );
if ( m.find() )
System.out.print( "Found it." );
else
System.out.print( "Didn't find it." ); // Always prints.
Javaで正規表現のテキストをエスケープする正しい方法は、次のようにすることです:
String quotedText = Pattern.quote("any text goes here !?@ #593 ++ { [");
次に、正規表現の一部としてquotedTextを使用できます。
たとえば、コードは次のようになります。
String text = "aaa aspx?pubid=222 zzz";
String quotedText = Pattern.quote( "aspx?pubid=222" );
Pattern p = Pattern.compile( quotedText );
Matcher m = p.matcher( text );
if ( m.find() )
System.out.print( "Found it." ); // This gets printed
else
System.out.print( "Didn't find it." );