创建正则表达式匹配数组(多行)

时间:2011-07-21 10:22:50

标签: java regex

我想从下面的文本创建正则表达式匹配字符串数组。

.title1
this is a content of title1.
this is also a content of title1.
..title2
this is a content of title2
this is also a content of title2

,所需的数组在

之下
array[0] = ".title1
this is a content of title1.
this is also a content of title1."

array[1] = "..title2
this is a content of title2
this is also a content of title2"

而下面是我的代码。

ArrayList<String> array = new ArrayList<String>();
Pattern p = Pattern.compile("^\.[\w|\W]+^\.", Pattern.MULTILINE);
Matcher m = p.matcher(textAbove);

if(m.matches()){
  m.reset();
  while(m.find()){
    array.add(m.group());
  }
}

但是使用此代码,array [0]包含从“.title1”到“。”。在“.title2”之前,并且由于m.find()不匹配而无法获取数组[1],并且当我使用^\.[\w|\W]+而不是上面的正则表达式时,array [0]包含所有内容。 我怎么能实现这个阵列? 我不坚持正则表达式,欢迎任何解决方案。

1 个答案:

答案 0 :(得分:1)

你非常接近 - 试试这个正则表达式:

^\..*?(?=(^\.|\Z))

在java中,这将是“

"^\\..*?(?=(^\\.|\\Z))" // escaping the backslashes for java String.