我有一个字符串
some-text+some-text*some-text|some-text
其中+some-text
是可选的。
示例:
1)master+single*stuff|Europe
(有效!)
2)slave*stuff|Finland
(有效!)
3)master+single*stuff
(错误!)
我需要定义这个字符串是否有效。
答案 0 :(得分:1)
正则表达式只应用于简单有限的情况。
如果您的需求更复杂,语法和词法分析器/解析器更好。
对于你的情况:
package regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* RegexDriver
* @author Michael
* @link http://stackoverflow.com/questions/29759673/java-how-can-i-parse-and-validate-a-string-using-regex/29759694?noredirect=1#comment47651768_29759694
* @since 4/20/2015 6:53 PM
*/
public class RegexDriver {
public static final String PATTERN = "^(\\w+[+])?\\w+[*]\\w+[|]\\w+$";
public static void main(String[] args) {
Pattern pattern = Pattern.compile(PATTERN);
for (String arg: args) {
Matcher matcher = pattern.matcher(arg);
boolean isMatch = matcher.matches();
System.out.println(String.format("'%s' match? %s", arg, isMatch));
}
}
}