gpt4 book ai didi

Java正则表达式查找特定长度的多行

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:27 25 4
gpt4 key购买 nike

我正在尝试使用 Java 正则表达式来匹配跨越多行的模式。该模式有一行以“A”开头,后跟恰好 50 个字符,然后是一行或多行以“B”开头,后跟恰好 50 个字符:

A...    //  exactly 50 chars after the A
B...
B...

Java 正则表达式似乎不支持这一点。

这是一个适用于一行 A 行和一行 B 行的正则表达式:

A.{50}[\\n[\\n\\r]]B.{50}[\\n[\\n\\r]]

这里是相同的正则表达式,经过修改后可以找到一个或多个 B 行:

A.{50}[\\n[\\n\\r]][B.{50}[\\n[\\n\\r]]]+

然而,此正则表达式仅在第一个 B 行找到前导 B 字符。

我使用 [\\n[\\r\\n]] 来处理 DOS 和 UNIX 换行符。打开 MULTILINE 模式不会影响结果。

问题似乎是当我使用带“+”的括号将 B 行的正则表达式转换为可以捕获多行的字符类时。

是否有关于 Java 正则表达式的内容不允许 '.'字符或大括号来指定精确的行长度?

最佳答案

在以下正则表达式中:

(A[^\r\n]{50}(\r\n|\n))(B[^\r\n]{50}(\r\n|\n))+

我使用 [^\r\n] 来匹配任何不是 \r\n 的字符。例如,如果您有数字,可以将其替换为 [\d]

参见 http://www.myregextester.com/?r=b7c3ca56

在示例中,正则表达式匹配除最后一行之外的所有内容。

关于Java正则表达式查找特定长度的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com