Java:如何使用正则表达式解析和验证字符串?

Java:如何使用正则表达式解析和验证字符串?,java,regex,Java,Regex,我有一根绳子 一些文本+一些文本*一些文本|一些文本 其中,+一些文本是可选的 示例: 1) master+single*stuff | Europe(有效!) 2) slave*stuff |芬兰(有效!) 3) master+single*stuff(错误!) 我需要定义此字符串是否有效。正则表达式应仅用于简单、有限的情况 如果您的需求更复杂,那么最好使用语法和词法分析器/解析器 对于您的情况: package regex; import java.util.regex.Matcher;

我有一根绳子

一些文本+一些文本*一些文本|一些文本

其中,
+一些文本
是可选的

示例:

1)
master+single*stuff | Europe
(有效!)

2)
slave*stuff |芬兰
(有效!)

3)
master+single*stuff
(错误!)


我需要定义此字符串是否有效。

正则表达式应仅用于简单、有限的情况

如果您的需求更复杂,那么最好使用语法和词法分析器/解析器

对于您的情况:

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));
        }
    }
}

所以
一些文本
只是文本,而不是包含
-
的文本吗?是的,IntelliJ中没有
-
。我将添加逃逸。