JAVA REGEX精确正确的图案

时间:2014-06-03 09:47:56

标签: java regex

我尝试使用正则表达式。我有这种模式

 STACK
 blabla
 OVER
 blabla
 STACK
 vlvlv
 OVER

也许最后还有另一条线。 我写这个模式似乎适用于检查正则表达但不适用于java的网站。

 "^(STACK(\n[^\n]+\n)OVER(\n[^\n]+(\n)?)?)+$"

什么是正确的模式? 致谢

1 个答案:

答案 0 :(得分:0)

假设您要检查整个输入是否可以与正则表达式匹配,您可以使用类似

的内容
String data =
        "STACK\r\n" + 
        "blabla\r\n" + 
        "OVER\r\n" + 
        "blabla\r\n" + 
        "STACK\r\n" + 
        "vlvlv\r\n" + 
        "OVER";

String regex ="(^STACK$((\r?\n|\r).+(\r?\n|\r))^OVER$((\r?\n|\r).+(\r?\n|\r)?)?+)+";
Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
Matcher m = p.matcher(data);

System.out.println(m.matches());
  • 我添加了Pattern.MULTILINE标记,让^$成为行的开头和结尾,而不是默认情况下是整个输入的开始和结束。
  • 另外要说STARTOVER必须是第一行中用^$包围它的单词。
  • 您在正则表达式中未包含的另一件事可能是行分隔符也可以是\r\n\r,因此我更改了它以反映它。
  • 我做的最后一件事是将[^\n]更改为.,因为它们几乎相同(点\r不包括[^\n]