【发布时间】:2014-03-21 06:44:39
【问题描述】:
我正在尝试读取模式输入字符串。让我们假设这个输入字符串在每个字符串中都被新的空格分隔。
第一个数字字符串(一,二,三,...)是强制性的,可选的数字字符串可以是可选的,直到它遇到操作数然后出现在相同的数字字符串模式之后。 例如,
ONE TWO ADD TWO FIVE // which is valid
ONE ADD TWO // which is valid
TWO SUB FIVE // also is valid
SUB TWO // is not valid
如何使用正则表达式查找模式?我刚开始使用 Java 的 Pattern 和 Matcher 类。
public boolean validate(String inputStr) {
// pattern regex
/* (zero|one|two|three|four|five|six|seven|eight|nine)\\s(zero|one|two|three|four|five|six|seven|eight|nine)?\\s(add|sub) */
Pattern p = Pattern.compile("(zero|one|two|three|four|five|six|seven|eight|nine)\\s[(zero|one|two|three|four|five|six|seven|eight|nine)]?\\s(add|sub|divide|multiply)\\s(zero|one|two|three|four|five|six|seven|eight|nine)", Pattern.CASE_INSENSITIVE);
// input string
Matcher m = p.matcher(inputStr);
return m.matches();
}
它返回假。
boolean isValidate = validate("One add two ");
System.out.println(isValidate);
谁能帮我解决这个问题?谢谢。
【问题讨论】: