我正在尝试使用正则表达式将文本墙分割成一个数组,并且效果很好,但是我不希望它删除我正在使用的分隔符。我已经研究了前瞻功能,但是我无法使其正常工作或根本无法工作。
我有以下正则表达式,它分为以下组合“Artículo#。”,“Artículo##。”,1),2)等以及a),b),c)和单词“Párrafo”。
var result = Regex.Split(text, @"(Artículo)\s[0-9](.)|(Artículo)\s[0-9][0-9](.)|[a-z](\))|[1-9](\))|[1-9][0-9](\))|(Párrafo)", RegexOptions.None);
我需要保留曾经拆分过的关键字。例如我有以下文字
Artículo 1. This is a test that includes : 1) Sample text 2) Sample text
我正在得到:
This is a test that includes :
Sample text
Sample text
我需要的:
Artículo 1. This is a test that includes :
1) Sample text
2) Sample text
我觉得我已经接近了,但是任何帮助都会很棒。
您可以使用
var text = "Artículo 1. This is a test that includes : 1) Sample text 2) Sample text";
var result = Regex.Split(text, @"(?!^)\s+(?=\bArtículo\s+[0-9]+\.|[a-z]\)|[1-9]\d?\)|\bPárrafo\b)", RegexOptions.None);
Console.WriteLine(string.Join("\n", result));
// => Artículo 1. This is a test that includes :
// => 1) Sample text
// => 2) Sample text
正则表达式是
(?!^)\s+(?=\bArtículo\s+[0-9]+\.|[a-z]\)|[1-9]\d?\)|\bPárrafo\b)
它匹配
(?!^)
-字符串开头以外的位置\s+
-1+空格(如果使用\s*
,则需要.Where(x => !string.IsNullOrEmpty(x))
在Regex.Split
通话后添加)(?=\bArtículo\s+[0-9]+\.|[a-z]\)|[1-9]\d?\)|\bPárrafo\b)
-紧随其后的位置
\bArtículo\s+[0-9]+\.|
-整个单词Artículo
,1+个空格,1+ ASCII数字和a .
,或[a-z]\)|
-小写ASCII字母和)
,或[1-9]\d?\)|
-非零数字,然后是可选数字和a )
,或者\bPárrafo\b
-整个词Párrafo
。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句