Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则换行选择_C#_Regex_Negative Lookahead - Fatal编程技术网

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绘画技巧