我想从下面的文本创建正则表达式匹配字符串数组。
.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]包含所有内容。
我怎么能实现这个阵列?
我不坚持正则表达式,欢迎任何解决方案。
答案 0 :(得分:1)
你非常接近 - 试试这个正则表达式:
^\..*?(?=(^\.|\Z))
在java中,这将是“
"^\\..*?(?=(^\\.|\\Z))" // escaping the backslashes for java String.