特殊字符的模式匹配问题

时间:2014-11-12 23:56:56

标签: java regex

当我运行此代码时,我遇到了下面提到的问题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;
    }

0 个答案:

没有答案