我正在尝试使用 c# 评估遵循此模式的字符串的内容(数字和描述由制表符分隔 - 标题不是文本的一部分,仅在此处进行解释(:
# description
1 first item
2 second item on two or
more lines of text
3 third item
我想得到一个匹配列表,其中有一个组用于数字和一个组用于描述。 我几乎通过以下正则表达式实现了它:
(?'number'd+)(?:t)(?'description'.+)
这给了我 3 场比赛,但新行上第二场比赛的文本总是被丢弃。 找不到如何在说明组中的多行中包含文本。
您可以使用否定的前瞻性来断言.*
后面的内容不是换行符和 1+ 位数字后跟制表符。
重复 0+ 次匹配整行以将其保留在description
组中。
(?'number'd+)t(?'description'.+(?:n(?!d+t).*)*)
解释
-
(?'number'd+)
匹配组中的 1+ 位数字number
-
t
匹配选项卡 -
(?'description'
命名捕获组description
-
.+
匹配除换行符以外的任何字符 -
(?:
非捕获组-
n(?!d+t).*
匹配换行符并断言以下内容不是 1+ 位数字和制表符
-
-
)*
关闭组并重复 0+ 次
-
-
)
关闭组说明
查看 .NET 正则表达式演示
尝试正则表达式: (?'number'd+)t(?'description'.+?)(?=^d|Z)
演示