java - 如何在java正则表达式中指示0,1次或多次回车换行

标签 java regex

我有 2 行(由 0、1 或多个 crlf 分隔),第一行的值始终是“line1”,并且由于这个值,我 try catch 第二行的值。

当两行之间只有一个 crlf 时,一切正常,但当有多个 crlf 时,正则表达式也会捕获 crlf。

这是我的正则表达式:

(?s)line1\r\n(.*?) ok

基本上我认为这个正则表达式会起作用:

(?s)line1\r\n*(.*?) ok

但事实并非如此,那么我怎么可能用量词 * 来表示可以有 0,1 或多个 crlf。

预先感谢您的帮助

最佳答案

你的模式已经快到了。您实际上不需要使用 (?s) 启用 DOTALL。这种模式应该足够了:

line1(?:\r\n)*(.*)

这与 line1 匹配,后跟零个或多个 \r\n,然后是第二行。

String example = "line1\r\n\r\n\r\nline2";    
Pattern pattern = Pattern.compile("line1(?:\r\n)+(.*)");    
Matcher m = pattern.matcher(example);

if (m.find()) {
  System.out.println(m.group(1));
}

打印:line2

关于java - 如何在java正则表达式中指示0,1次或多次回车换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29162833/

相关文章:

java - 如何修复java中的UnknownHostException

java - 如何指定此 Spring MVC 演示应用程序中显示的第一页是什么?

java - 从没有 TimeZone 名称的 TimeZone 获取 TimeZone 偏移值

python - 将数据框列文本包装为具有不同长度约束的多个列

java - 在 Android 布局中使用 ListView 滚动中间内容

javascript - 如何匹配包含特殊字符的整个单词?

用于识别 HTML 标签的正则表达式(仅作为正则表达式重复学习练习!!)

mysql - 匹配指定的整数

c# - 正则表达式匹配任何内容,包括换行符

java - 卡夫卡高级消费者