C# 正则换行选择
我的代码:C# 正则换行选择,c#,regex,negative-lookahead,C#,Regex,Negative Lookahead,我的代码: Regex(([A-Za-z0-9]{5})=([^\n]+)”,RegexOptions.Compiled) 示例文本: ab94c=此处有一些文本 a6u4c=此处的示例文本 示例文本继续。它包含一个换行符。 gh94c=此处有更多文本 这就是我得到的: 这就是我想要的: 每个文本都有一个id。我想捕获id和每个字符,直到下一个id。我想创建如下数组: 数组[ab94c]=此处的一些文本 数组[a6u4c]=此处的示例文本 示例文本继续。它包含一个换行符 数组[gh94c]=此处
Regex(([A-Za-z0-9]{5})=([^\n]+)”,RegexOptions.Compiled)代码>
示例文本:
ab94c=此处有一些文本
a6u4c=此处的示例文本
示例文本继续。它包含一个换行符。
gh94c=此处有更多文本
这就是我得到的:
这就是我想要的:
每个文本都有一个id。我想捕获id和每个字符,直到下一个id。我想创建如下数组:
数组[ab94c]=此处的一些文本
数组[a6u4c]=此处的示例文本
示例文本继续。它包含一个换行符
数组[gh94c]=此处还有一些文本您可以使用下面基于正向前瞻的正则表达式
@"(?s)(?:^|\n)([A-Za-z0-9]{5})=(.*?)(?=\n[A-Za-z0-9]{5}=|$)"
- 如果在正则表达式中使用DOTALL修饰符
(?s)
,^
只匹配第一行的开头
- 所以这个
(?:^ |\n)
匹配第一行或新行字符的开头
- 它存在于
([A-Za-z0-9]{5})=
5个字母数字字符和=
符号之前。这捕获了alphanum字符
- 现在,
(.*)
将执行零个或多个字符的非贪婪匹配,直到
\n[A-Za-z0-9]{5}=
到达一个新行,后跟5个alphanum字符和一个=
符号。或
- 已到达行的
$。这里的$
只匹配最后一行的末尾,因为我们使用的是DOTALL修饰符
现在有什么问题吗?您检查过我提供的regex101链接了吗?它并没有捕获字符串的第二行。事实上,我确实捕获了,我确实找到了三个匹配项,正如预期的那个样!这就是我想要的“有些人在遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题。”(Fredrik Lundh,1998)这就是我想要的。谢谢。你是如何获得预期输出的屏幕截图的?使用一些MS绘画技巧