当我运行此代码时,我遇到了下面提到的问题m.matches()
方法,如下面的代码所示,我总是返回false
。那种模式永远不会匹配。
getComputePattern()
返回的输出类似于> ".*?\Q%\E(.*?)\Q?\E.*"
。它匹配的字符串是"%6015995734174429?;6015995734174429?"
。
任何想法我怎么能继续解决下面提到的这个问题。
起始模式和结束模式可能不同。它可以是\
,[
,]
等中的任何一种。
此外,卡号可以包含\
,[
,]
等开始和结束模式中的任何一种。
任何人都可以告诉我如何才能解决这个问题?我可以在这里做些什么不同以使模式匹配?
public String getComputePattern()
{
String startPattern = "%";
String endPattern = "?";
String regex = "";
regex = ".*?" + Pattern.quote( startPattern ) + "(.*)" + Pattern.quote( endPattern ) + ".*";
return regex;
}
public final boolean supports( RawTrackData rawTrackData )
{
final String pattern = getComputePattern();
final String data = "%6015995734174429?;6015995734174429?";
if( !JavaUtils.isNullOrEmpty( trackDataPattern ) )
{
final Matcher m = Pattern.compile( trackDataPattern ).matcher( trackData );
return m.matches();
}
return true;
}