下面的代码不会找到字符串“MOVE”目前在myStr的变量奇怪的行为
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String myStr = " ELSE MOVE EXT-LNGSHRT-AMT-C TO WK-UNSIGNED-LNGSHRT-AMT COMPUTE WK-SHORT-AMT = EXT-LNGSHRT-AMT-C * -1.";
String verbsRegex = "\\s+(ACCEPT|ADD|ALTER|CALL|CANCEL|CLOSE|COMPUTE|DELETE|DISPLAY|DIVIDE|ELSE|EXIT|EVALUATE|EXEC|GO|GOBACK|IF|INITIALIZE|INSPECT|INVOKE|MERGE|MOVE|MULTIPLY|OPEN|PERFORM|READ|RELEASE|RETURN|REWRITE|SEARCH|SET|SORT|START|STOP|STRING|SUBTRACT|UNSTRING|WRITE|COPY|CONTINUE|WHEN)\\s+";
Pattern p = Pattern.compile(verbsRegex);
Matcher m = p.matcher(myStr);
System.out.println("------------------------------------");
while (m.find()) {
System.out.println(myStr.substring(m.start(),m.end()));
System.out.println("("+ m.group(1) + ")");
}
System.out.println("------------------------------------");
}
}
如果我改变myStr的喜欢的东西
String myStr = " MOVE ELSE MOVE EXT-LNGSHRT-AMT-C TO WK-UNSIGNED-LNGSHRT-AMT COMPUTE WK-SHORT-AMT = EXT-LNGSHRT-AMT-C * -1.";
的java开始返回我的移动。但在这种情况下,ELSE会错过!
请解释这种行为?我在这里错过了很明显的东西吗
在此先感谢。
您只捕获“白色空格后跟任何下列字符串,然后是更多空白区域”,这样只会对“MOVE”或“ELSE”等文本起作用,但不会“MOVE ELSE”,因为ELSE不仅仅是前面的白色空间。 – gtgaxiola
你总是打印同一组... – pedromss