用(\\?)替换问号(?)

Bra*_*rad 24 java regex replace escaping

我试图定义一个模式来匹配文本与其中的问号(?).在正则表达式中,问号被认为是"一次或根本没有".那么我可以用(\\?)替换我的文本中的(?)符号来修复模式问题吗?

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.
Run Code Online (Sandbox Code Playgroud)

cod*_*ict 45

您需要?\\?正则表达式中那样转义,而不是在文本中转义.

Pattern p = Pattern.compile( "aspx\\?pubid=222" );
Run Code Online (Sandbox Code Playgroud)

看见

您还可以使用类的quote方法Pattern来引用正则表达式元字符,这样就不必担心引用它们:

Pattern p = Pattern.compile(Pattern.quote("aspx?pubid=222"));
Run Code Online (Sandbox Code Playgroud)

看见