【问题标题】:Separate regex groups分离正则表达式组
【发布时间】:2018-05-30 19:32:35
【问题描述】:

我有一个 java 正则表达式来获取(数字空格文本)值,但是当我有一个新行时,值没有分组,示例

正则表达式(\d{14}\s.*\n)

价值:

59105999000321 My value start
with new line number
12105999000343 AAAAAasasas asdasdasd
32105999000323 asdasxasxasx asdasd

https://regex101.com/ 中的分组结果为:

Match 1
Full match  0-29    `59105999000321 My value start`
Group 1.    0-29    `59105999000321 My value start`
Match 2
Full match  51-87   `12105999000343 AAAAAasasas asdasdasd`
Group 1.    51-87   `12105999000343 AAAAAasasas asdasdasd`
Match 3
Full match  88-122  `32105999000323 asdasxasxasx asdasd`
Group 1.    88-122  `32105999000323 asdasxasxasx asdasd`

我有一个正则表达式,结果如下:

group 1 : 59105999000321 My value start
    with new line number

group 2: 12105999000343 AAAAAasasas asdasdasd

group 3: 32105999000323 asdasxasxasx asdasd

我期待

group 1 : 59105999000321 My value start with new line number 

group 2: 12105999000343 AAAAAasasas asdasdasd 

group 3: 32105999000323 asdasxasxasx asdasd

我如何在 java 中做到这一点?

【问题讨论】:

  • 预期输出是什么?
  • group 1 : 59105999000321 我的值从新行号开始 group 2: 12105999000343 AAAAAAasasas asdasdasd group 3: 32105999000323 asdasxasxasx asdasd
  • 你的正则表达式只有 1 个捕获组,所以 matcher.group(0) = 整个匹配和 matcher.group(1) = 组 1。

标签: java regex regex-group


【解决方案1】:

尝试正则表达式:(\d{14}\s.*(?:\n*(?!^\d{14}).*)*)

Demo

说明: 由于要求匹配以 14 位开头的行,因此在 \n* 之后添加相同的负前瞻

【讨论】:

  • 好,但是,我需要按组和无限 \n 分开,直到另外 14 位数字或最后一行,是可能的吗?
  • 请使用您的失败案例编辑演示链接。(添加字符串后,使用左上角的更新正则表达式链接)。另外,您能否提供更多详细信息来说明“我需要按组分开”是什么意思?正如您在帖子中提到的那样,完整比赛和第 1 组正在比赛。
  • 编辑值 regex101.com/r/B2hqjR/2 我需要单独的匹配器 14 位数字,直到另外 14 位数字或文本结尾文本值 ================= 59105999000321 我的value start with new line number aaaa 12105999000343 AAAAAasasas 32105999000323 asdasxasxasx asdasd weqpowepoqwiq ============ The first match 59105999000321 My value start with new line number aaaa the second match 12105999000343 AAAAAasasas the third match 32105999000323 asdasxasxasx asdasd weqpowepoqwiq - -------------------- 你明白了吗?
  • 看看(\d{14}\s.*(?:\n*(?!^\d{14}).*)*) 是否有效。 Demo
  • @MisterB,我在最后一条评论中用正则表达式编辑了答案
猜你喜欢
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多