【发布时间】:2021-11-23 23:40:30
【问题描述】:
从这个帖子回答得到了一些很大的帮助here
现在我正在尝试在我的多行字符串中捕获几个模式,但无法正常工作。有什么提示吗?
这是一个 .net fiddle 我正在玩
desired result:
//these can be letters
1: 3333
2: 1111
代码:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
var item = " john smith (ABCDEFG) <js@email.com>\n" +
"target1 = 3333, j\n" +
"target2 1111, ";
String[] patternArr = {"(?:\\s*)",
"(?<target1>target1 = (\\w+)])", // capture the first target
"(?:\\s*)",
"(?<target2>target2 (\\w+))", // captures the second target
};
var pattern = String.Join("", patternArr);
var m = Regex.Match(item, pattern);
if (m.Success)
{
Console.WriteLine("target1: {0}", m.Groups["target1"]);
Console.WriteLine("target2: {0}", m.Groups["target2"]);
}
}
}
【问题讨论】:
-
注意
\t在"(?<target2>\target2 (\\w+))"是一个TAB,我想你想要t。主要问题是您的正则表达式与那样的字符串不匹配。图案要求是什么?试试var pattern = @"target1 = (?<target1>.+)\ntarget2(?<target2>.+)";,或许能解决问题。 -
好的,刚刚更新了 OP。我只需要 4 个字母数字字符