c# - 使用正则表达式 C# 在两个字符串的 block 中获取文本文件的多行字符串

标签 c# regex

我有一个文本文件,其内容如下:

   initTest   
1234 567 8910
1234 567 8910
   endTest   

   initTest   
1234 567 8911
1234 567 8911
   endTest   

   initTest   
1234 567 8912
1234 567 8912
   endTest   

然后我需要获取“initTest”(单词前后各有3个空格)和“endTest”(单词前后各有3个空格)中的 block 数并保存元素数组 X 的 block 。结果应该是, X[0] = {"1234 567 8910\n 1234 567 8910"} X.length = 3。

我尝试使用 Regex 在 C# 中跟踪代码,但结果不匹配。

string text = line;
string search = @"(^\s*initTest.*?^\s*endTest)";

MatchCollection matches = Regex.Matches(text, search, RegexOptions.Singleline | RegexOptions.IgnoreCase);

Console.WriteLine("there was {0} matches for '{1}'", matches.Count, search);

Console.ReadLine();

我非常感谢任何线索和帮助。非常感谢您。

最佳答案

使用

(?<=initTest)(.|\n)*?(?=endTest)

在哪里

initTest(.|\n)*?endTest

将捕获所需的文本,但包括 initTest 和 endTest。使用 (?<=...) 和 (?=...) 将有助于摆脱它们。

演示:https://dotnetfiddle.net/tiXRut

关于c# - 使用正则表达式 C# 在两个字符串的 block 中获取文本文件的多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38774057/

相关文章:

javascript - 使用 python 在 javascript 中搜索字符串

C# 枚举 - 可能有双重 ID

c# 到 geojson 弹出项目括号 []

c# - 获取具有任何签名的任何方法的 MethodInfo(任何签名的委托(delegate))

regex - Emacs,使用 replace-regexp-in-string 来匹配两个正则表达式

javascript - 删除连续重复的单词javascript

C# 如何将数据网格中的列按字母顺序排序?

c# - 在 C# 中测试类型安全枚举模式

php - 我将如何使用正则表达式来解析这个和弦方案?

javascript - 使用 RegExp 递归检索多个捕获组