如何在 Java 正则表达式中使用 OR?我尝试了以下操作,但它返回null
而不是文本。
Pattern reg = Pattern.compile("\\*+|#+ (.+?)");
Matcher matcher = reg.matcher("* kdkdk"); \\ "# aksdasd"
matcher.find();
System.out.println(matcher.group(1));
用于搜索X
or的正则表达式语法Y
是(X|Y)
。如果模式中还有其他内容,则需要括号。您正在搜索以下模式之一:
文字
*
重复一次或多次
或者
重复一次或多次的文字
#
,后跟一个空格,后跟一个或多个任意字符,匹配最少次数
此模式使用 OR 的第一部分匹配*
,但由于该子模式未定义捕获组,matcher.group(1)
因此将为空。如果你打印了matcher.group(0)
,你会得到*
输出。
如果要捕获以“*”或“#”开头的行中空格右侧的第一个字符重复了一些次,然后是空格和至少一个字符,您可能需要:
Pattern.compile("(?:\\*+|#+) (.+?)");
如果您想要空间右侧的所有内容,您想要:
Pattern.compile("(?:\\*+|#+) (.+)");