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)