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

标签 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() 不匹配而无法获取 array[1],并且当我使用 ^\.[\w|\W]+ 而不是上面的正则表达式模式时, array[0] 包含所有内容。 我怎样才能实现这个数组? 我不坚持正则表达式,欢迎任何解决方案。

最佳答案

你已经很接近了 - 试试这个正则表达式:

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

在 Java 中,这将是“

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

关于java - 创建正则表达式匹配数组(多行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774571/

相关文章:

java - 如何在android中导入特定版本的 Fabric

java - 从大文件中查找词频

ruby - 将 Ruby DateTime 格式转换为正则表达式

python - 在Python中对字典的字母数字键进行排序

java - 在 JTextField 的 DocumentFilter 中使用正则表达式时出现问题

java - 如何返回泛型方法?

java - 使用java在酱汁实验室上同时运行不同功能的测试

Java 控制台在 AMD 64 位平台上无法运行 : Can't load IA 32-bit . dll

java - java正则表达式匹配器是有状态的吗?

regex - 使用 Perl 执行系统命令