需要正则表达式来匹配多行源中的单词

时间:2013-05-06 09:40:16

标签: java regex

我需要一个正则表达式来匹配以下来源中的第一个单词:

WanRoutingProtocol=
     Static



              192.160.22.0/27
              false

           2004:BA2:78::50


  =IAS

我只想在java中使用正则表达式提取第一个单词(在本例中为“Static”)。

空白行包含多个换行符。

我正在使用以下正则表达式

  "^(\\n)+Static.*IAS"

但这不起作用。

1 个答案:

答案 0 :(得分:1)

使用以下正则表达式。表达式假设输入始终以关键字" WanRoutingProtocol"开头和结尾。和" IAS"并将获取在"静态"。

的地方出现的任何关键字
^WanRoutingProtocol=\\s*(.*)[\\s\\w\\./:]*=IAS$

以下是如何用Java实现这一目标的。 (没有必要使用Pattern.MULTILINE

String input = "WanRoutingProtocol=\n" +
    "     Static\n" +
    "\n" +
    "\n" +
    "\n" +
    "              192.160.22.0/27\n" +
    "              false\n" + 
    "\n" +
    "           2004:BA2:78::50\n" +
    "\n" +
    "\n" +
    "  =IAS";
Pattern p = Pattern.compile("^WanRoutingProtocol=\\s*(.*)[\\s\\w\\./:]*=IAS$");
Matcher m = p.matcher(input);
while (m.find()) {
    System.out.println(m.group(1)); // prints "Static"
}