我有一个这种格式的.txt文件
内容长度:20
blahblahblah
-stop-
内容长度:10烧伤
-step-
内容长度:0< ---空的空间--->
-step-
内容长度:10HUBA
-step-
我使用正则表达式来分隔每个内容长度的部分,这是使用步骤或停止使其成为部分的结尾。我的正则表达式是
((内容长度:?)\ S(\ d )\ r \ n] +([\ s \ S] +)( - 停止 - | -step-)) *
但是,如果内容长度为零,这意味着在步骤或停止之前有空格,它还会捕获下一个内容长度部分。有什么想法可以防止这种情况吗?
答案 0 :(得分:1)
我想出了以下正则表达式,不确定它是否是你想要的:
var pattern = @"(content-length:\s\d+(?:[\s\S]*?)?-(?:stop|step)-)";
var input = @"content-length: 20
blahblahblah
-stop-
content-length: 10
bum
-step-
content-length: 0
-step-
content-length: 10
huba
-step-";
var result = Regex.Split(input, pattern);
输出:
答案 1 :(得分:0)
试试这个
(?:(?:content-length):\s(?<length>\d+)\n+(?<content>.*?)\n*(?:-stop-|-step-))
输入:
content-length: 20
blahblahblah
-stop-
content-length: 10
bum
-step-
content-length: 0
-step-
content-length: 10
huba
-step-
输出:
MATCH 1
length [16-18] `20`
content [20-32] `blahblahblah`
MATCH 2
length [56-58] `10`
content [60-63] `bum`
MATCH 3
length [87-88] `0`
2. [91-91] ``
MATCH 4
length [114-116] `10`
content [118-122] `huba`
答案 2 :(得分:0)
(?:(?:content-length:))\s(\d+)[\r\n]+(.*)?[\r\n]+(?:-stop-|-step-)
答案 3 :(得分:0)
((内容长度:)\ S(\ d +)[\ r \ n]的+(*)\ N *( - 停止 - | -step-))。 在这里查看正则表达式https://regex101.com/r/wU9uA4/1
答案 4 :(得分:0)
试试这段代码:
((content-length:)\s(\d)[\r\n]\*([\s\S]\*?)(-stop-|-step-))