我正在实现一个读卡器,我需要在 android 中使用正则表达式。在维基百科之后,track1 的正则表达式是:
^%([A-Z])([0-9]{1,19})\^([^\^]{2,26})\^([0-9]{4}|\^)([0-9]{3}|\^)([^\?]+)\?$
在这里尝试:http ://www.regexplanet.com/advanced/java/index.html使用以下示例:%B6011898748579348^DOE/JOHN ^37829821000123456789? 它有效,但不适用于我的应用程序。
String re = "%([A-Z])([0-9]{1,19})\\^([^\\^]{2,26})\\^([0-9]{4}|\\^)([0-9]{3}|\\^)([^\\?]+)\\?";
Pattern p = Pattern.compile(re);
String teste = "%B6011898748579348^DOE/ JOHN ^37829821000123456789?";
Matcher m = p.matcher(teste);
Log.d(TAG,"1111: "+m.groupCount());
int i=0;
for(i=0;i<m.groupCount();i++){
try{
Log.d(TAG, "GROUP"+Integer.toString(i)+" - "+m.group(i));
}catch (IllegalStateException e){
Log.d(TAG, e.toString());
}
}
用 ^ 和 $ 和多行测试但没有工作:s 结果总是:
1111:6 java.lang.IllegalStateException:到目前为止没有成功匹配 java.lang.IllegalStateException:没有成功......