C# 在空新行之前匹配行

C# 在空新行之前匹配行,c#,regex,C#,Regex,输入如下: 0 00:00:00,000 --> 00:00:00,000 Hello world! 1 00:00:00,000 --> 00:00:00,000 Hello world! This is my new world. 2 00:00:00,000 --> 00:00:00,000 Hello guys! 0 00:00:00,000 --> 00:00:00,000 你好,世界! 1. 00:00:00,000 --> 00:00:00,000 你好,世界! 这是我的新世界

输入如下:

0 00:00:00,000 --> 00:00:00,000 Hello world! 1 00:00:00,000 --> 00:00:00,000 Hello world! This is my new world. 2 00:00:00,000 --> 00:00:00,000 Hello guys! 0 00:00:00,000 --> 00:00:00,000 你好,世界! 1. 00:00:00,000 --> 00:00:00,000 你好,世界! 这是我的新世界。 2. 00:00:00,000 --> 00:00:00,000 大家好! 使用清晰快速的正则表达式,我想将其分为:

Match 1: `0` Match 2: `00:00:00,000 --> 00:00:00,000` Match 3: `Hello world!` Match 1: `1` Match 2: `00:00:00,000 --> 00:00:00,000` Match 3: `Hello world! This is my new world.` Match 1: `2` Match 2: `00:00:00,000 --> 00:00:00,000` Match 3: `Hello guys!` 匹配1:`0` 匹配2:`00:00:00000-->00:00:00000` 第三场:“你好,世界` 第1场:`1` 匹配2:`00:00:00000-->00:00:00000` 第三场:“你好,世界! 这是我的新世界` 第1场:第2场` 匹配2:`00:00:00000-->00:00:00000` 第三场:“大家好` 我使用
(\d+[\n\r]([\d:,]+\s-->\s[\d:,]+)[\n\r]。+
进行匹配,但问题是它不匹配两行或两行以上的文本(匹配上例第2组中的3行)

注意:如果您知道一种不使用Regex而具有良好可读性和更好性能的方法,请随时提供给我

谢谢,
阿里雷扎给你

(\d+)[\n\r]([\d:,]+\s-->\s[\d:,]+)[\n](.+(?:[\n]*[^\d|^\n]+)*)
结果

比赛1

  • [0-1]
    0

  • [2-31]
    00:00:00000-->00:00:00000

  • [32-44]
    你好,世界

  • 比赛2

  • [46-47]
    1

  • [48-77]
    00:00:00000-->00:00:00000

  • [78-112]
    你好,世界!
    这是我的新世界。

  • 比赛3

  • [114-115]
    2

  • [116-145]
    00:00:00000-->00:00:00000

  • [146-157]
    大家好

  • 尝试

    编辑

    我也尝试过为数字更新正则表达式,所以现在它匹配多行,根据需要匹配其中的数字。现在看起来也有点短

    (\d+)[\n](.*?)\n((?s).*?)(?=\n\n\d|\Z)
    
    此正则表达式与以下内容匹配

    0
    00:00:00,000 --> 00:00:00,000
    Hello world!
    
    1
    00:00:00,000 --> 00:00:00,000
    Hello world!
    This is my new world.
    
    2
    00:00:00,000 --> 00:00:00,000
    Hello guys!
    This line contains 123457!
    This is third line!
    And more lines!
    
    作为

    比赛1

  • [0-1]
    0

  • [2-31]
    00:00:00000-->00:00:00000

  • [32-44]
    你好,世界

  • 比赛2

  • [46-47]
    1

  • [48-77]
    00:00:00000-->00:00:00000

  • [78-112]
    你好,世界!
    这是我的新世界。

  • 比赛3

  • [114-115]
    2

  • [116-145]
    00:00:00000-->00:00:00000

  • [146-220]
    大家好!
    这行包含123457!
    这是第三条线!
    还有更多的台词

  • 试试看

    给你

    (\d+)[\n\r]([\d:,]+\s-->\s[\d:,]+)[\n](.+(?:[\n]*[^\d|^\n]+)*)
    
    结果

    比赛1

  • [0-1]
    0

  • [2-31]
    00:00:00000-->00:00:00000

  • [32-44]
    你好,世界

  • 比赛2

  • [46-47]
    1

  • [48-77]
    00:00:00000-->00:00:00000

  • [78-112]
    你好,世界!
    这是我的新世界。

  • 比赛3

  • [114-115]
    2

  • [116-145]
    00:00:00000-->00:00:00000

  • [146-157]
    大家好

  • 尝试

    编辑

    我也尝试过为数字更新正则表达式,所以现在它匹配多行,根据需要匹配其中的数字。现在看起来也有点短

    (\d+)[\n](.*?)\n((?s).*?)(?=\n\n\d|\Z)
    
    此正则表达式与以下内容匹配

    0
    00:00:00,000 --> 00:00:00,000
    Hello world!
    
    1
    00:00:00,000 --> 00:00:00,000
    Hello world!
    This is my new world.
    
    2
    00:00:00,000 --> 00:00:00,000
    Hello guys!
    This line contains 123457!
    This is third line!
    And more lines!
    
    作为

    比赛1

  • [0-1]
    0

  • [2-31]
    00:00:00000-->00:00:00000

  • [32-44]
    你好,世界

  • 比赛2

  • [46-47]
    1

  • [48-77]
    00:00:00000-->00:00:00000

  • [78-112]
    你好,世界!
    这是我的新世界。

  • 比赛3

  • [114-115]
    2

  • [116-145]
    00:00:00000-->00:00:00000

  • [146-220]
    大家好!
    这行包含123457!
    这是第三条线!
    还有更多的台词

  • 试试看

    给你

    (\d+)[\n\r]([\d:,]+\s-->\s[\d:,]+)[\n](.+(?:[\n]*[^\d|^\n]+)*)
    
    结果

    比赛1

  • [0-1]
    0

  • [2-31]
    00:00:00000-->00:00:00000

  • [32-44]
    你好,世界

  • 比赛2

  • [46-47]
    1

  • [48-77]
    00:00:00000-->00:00:00000

  • [78-112]
    你好,世界!
    这是我的新世界。

  • 比赛3

  • [114-115]
    2

  • [116-145]
    00:00:00000-->00:00:00000

  • [146-157]
    大家好

  • 尝试

    编辑

    我也尝试过为数字更新正则表达式,所以现在它匹配多行,根据需要匹配其中的数字。现在看起来也有点短

    (\d+)[\n](.*?)\n((?s).*?)(?=\n\n\d|\Z)
    
    此正则表达式与以下内容匹配

    0
    00:00:00,000 --> 00:00:00,000
    Hello world!
    
    1
    00:00:00,000 --> 00:00:00,000
    Hello world!
    This is my new world.
    
    2
    00:00:00,000 --> 00:00:00,000
    Hello guys!
    This line contains 123457!
    This is third line!
    And more lines!
    
    作为

    比赛1

  • [0-1]
    0

  • [2-31]
    00:00:00000-->00:00:00000

  • [32-44]
    你好,世界

  • 比赛2

  • [46-47]
    1

  • [48-77]
    00:00:00000-->00:00:00000

  • [78-112]
    你好,世界!
    这是我的新世界。

  • 比赛3

  • [114-115]
    2

  • [116-145]
    00:00:00000-->00:00:00000

  • [146-220]
    大家好!
    这行包含123457!
    这是第三条线!
    还有更多的台词

  • 试试看

    给你

    (\d+)[\n\r]([\d:,]+\s-->\s[\d:,]+)[\n](.+(?:[\n]*[^\d|^\n]+)*)
    
    结果

    比赛1

  • [0-1]
    0

  • [2-31]
    00:00:00000-->00:00:00000

  • [32-44]
    你好,世界

  • 比赛2

  • [46-47]
    1

  • [48-77]
    00:00:00000-->00:00:00000

  • [78-112]
    你好,世界!
    这是我的新世界。

  • 比赛3

  • [114-115]
    2

  • [116-145]
    00:00:00000-->00:00:00000

  • [146-157]
    大家好

  • 尝试

    编辑

    我也尝试过为数字更新正则表达式,所以现在它匹配多行,根据需要匹配其中的数字。现在看起来也有点短

    (\d+)[\n](.*?)\n((?s).*?)(?=\n\n\d|\Z)
    
    这个正则表达式