Regex 如何为冒号或换行符分隔的单词编写正则表达式&;标签
\w+:\w+\s*\w*\n-这是一个正则表达式,用于组合由新行分隔的键值对(用冒号分隔) 以上是两个匹配项。。。 abc:sss def:ghj 但是这个正则表达式只允许单词中第一次出现空格/制表符 有人能告诉我如何避免选项卡/空格的“全部”出现吗 编辑: 如果我们有上面这样的文本-如果我使用正则表达式,我需要得到2个匹配项Regex 如何为冒号或换行符分隔的单词编写正则表达式&;标签,regex,Regex,\w+:\w+\s*\w*\n-这是一个正则表达式,用于组合由新行分隔的键值对(用冒号分隔) 以上是两个匹配项。。。 abc:sss def:ghj 但是这个正则表达式只允许单词中第一次出现空格/制表符 有人能告诉我如何避免选项卡/空格的“全部”出现吗 编辑: 如果我们有上面这样的文本-如果我使用正则表达式,我需要得到2个匹配项 体育:体育文本 食物:FoodText 我可以想出这个正则表达式: ^(\w+):|(.+) 组1将捕获“密钥”,而组2将捕获内容。我无法让第2组存储多行的所有内容
我可以想出这个正则表达式:
^(\w+):|(.+)
组1将捕获“密钥”,而组2将捕获内容。我无法让第2组存储多行的所有内容,因此如果您有多行,您将有多个第2组。查看以下匹配信息:
匹配信息
MATCH 1
Group 1: [0-6] `sports`
MATCH 2
Group 2: [7-63] ` soccer, tennis I would like to play all kind of spots`
MATCH 3
Group 2: [64-99] ` the spots desc continues...`
MATCH 4
Group 1: [100-104] `Food`
MATCH 5
Group 2: [105-150] ` Indian, Italian, Mexican - I love all three.`
假设匹配中所有嵌入的换行符后面紧跟着一个制表符(请注意下面模式中的\n\t),则此代码应该完全有效
//匹配表单“Word:带有内嵌换行符/制表符组合的某些文本”的模式
常量字符串模式=@“^\w+:(.|(\n\t))*”;
//获取匹配的项目
MatchCollection matches=Regex.matches(输入、模式、RegexOptions.Multiline);
//写出匹配项
for(int i=0;i
对于输入字符串,此代码的输出如下所示:
-----MATCH-----
sports: soccer, tennis I would like to play all kind of spots
the spots desc continues...
-----MATCH-----
Food: Indian, Italian, Mexican - I love all three.
-----匹配-----
运动:足球、网球我想参加各种各样的比赛
斑点描述继续。。。
-----匹配-----
食物:印度菜、意大利菜、墨西哥菜——我都喜欢。
确保不要忘记
RegexOptions.Multiline
选项;它使^
作为行的开始,而不仅仅是整个字符串的开始。我不明白你的问题,你想做什么?给出一个示例输入和您期望的输出,我看不出您的regexp将如何匹配它。regexp在:
之后有一个所需的空格,但您的匹配项没有该空格。顺便说一句,您不需要转义:
。请查看编辑。我需要用新行分隔文本,在起始字符前没有空格。@相对论已修复,现在请查看
//Pattern to match the form "Word: some text with embedded newline/tab combos"
const string pattern = @"^\w+:(.|(\n\t))*";
//Get the matching items
MatchCollection matches = Regex.Matches(input, pattern, RegexOptions.Multiline);
//Write out the matches
for (int i = 0; i < matches.Count; i++)
{
Console.WriteLine("-----MATCH-----");
Console.WriteLine(matches[i].Value);
Console.WriteLine();
}
-----MATCH-----
sports: soccer, tennis I would like to play all kind of spots
the spots desc continues...
-----MATCH-----
Food: Indian, Italian, Mexican - I love all three.