正则表达式换行符选择
Regex newline selecting
我的代码:
Regex("([A-Za-z0-9]{5})=([^\n]+)", RegexOptions.Compiled);
示例文本:
ab94c=some text here
a6u4c=sample text here
sample text continues. it contains a newline character.
gh94c=some more text here
这是我得到的:https://regex101.com/r/cN6gJ5/1
这就是我想要的:
每个文本都有一个 ID。我想捕获 id 和每个字符,直到下一个 id。我想创建一个这样的数组:
array[ab94c] = 这里有一些文字
数组[a6u4c] = 示例文本在这里
示例文本继续。它包含换行符。
array[gh94c] = 这里还有一些文字
您可以使用以下基于正向预测的正则表达式。
@"(?s)(?:^|\n)([A-Za-z0-9]{5})=(.*?)(?=\n[A-Za-z0-9]{5}=|$)"
如果在正则表达式中使用 DOTALL 修饰符 (?s)
,^
仅匹配第一行的开头。
所以这个(?:^|\n)
匹配第一行的开头或换行符,
存在于 ([A-Za-z0-9]{5})=
5 个字母数字字符和一个 =
符号之前。这会捕获字母数字字符。
现在 (.*?)
将对零个或多个字符进行非贪婪匹配,直到
\n[A-Za-z0-9]{5}=
换行符后跟 5 个字母数字字符加上一个 =
符号。或
$
行到达。这里 $
仅匹配最后一行的结尾,因为我们使用了 DOTALL 修饰符。
我的代码:
Regex("([A-Za-z0-9]{5})=([^\n]+)", RegexOptions.Compiled);
示例文本:
ab94c=some text here
a6u4c=sample text here
sample text continues. it contains a newline character.
gh94c=some more text here
这是我得到的:https://regex101.com/r/cN6gJ5/1
这就是我想要的:
每个文本都有一个 ID。我想捕获 id 和每个字符,直到下一个 id。我想创建一个这样的数组:
array[ab94c] = 这里有一些文字
数组[a6u4c] = 示例文本在这里
示例文本继续。它包含换行符。
array[gh94c] = 这里还有一些文字
您可以使用以下基于正向预测的正则表达式。
@"(?s)(?:^|\n)([A-Za-z0-9]{5})=(.*?)(?=\n[A-Za-z0-9]{5}=|$)"
如果在正则表达式中使用 DOTALL 修饰符
(?s)
,^
仅匹配第一行的开头。所以这个
(?:^|\n)
匹配第一行的开头或换行符,存在于
([A-Za-z0-9]{5})=
5 个字母数字字符和一个=
符号之前。这会捕获字母数字字符。现在
(.*?)
将对零个或多个字符进行非贪婪匹配,直到\n[A-Za-z0-9]{5}=
换行符后跟 5 个字母数字字符加上一个=
符号。或$
行到达。这里$
仅匹配最后一行的结尾,因为我们使用了 DOTALL 修饰符。