我正在试图弄清楚如何编写一个可以匹配“3Z10Z”和“3Z 10Z”的模式,然后返回“3Z”。 (稍后我将编写模式以返回10Z部分......)。
我尝试使用像@"\d+Z\s*\B"
这样的东西尝试抓住第一部分,但没有骰子。有人认为,如果可能的话,它是从左到右阅读并返回它找到的第一个@“\ d + Z”。为了以后得到“10Z”部分,我需要它从右到左阅读......
非常感谢任何帮助!
答案 0 :(得分:1)
您是否尝试过@"(\d[A-Z])\s*(.*)"
?
如果您运行以下程序,则可以一次性捕获前缀和后缀
基本上是一个数字后跟大写字母。
static void Main(string[] args)
{
string text1 = "3Z10Z";
string text2 = "3Z 10Z";
string pattern = @"(\d[A-Z])\s*(.*)";
Match match = Regex.Match(text1, pattern);
if (match.Success)
{
Console.WriteLine("prefix {0} suffix {1}.",
match.Groups[1].Value, match.Groups[2].Value);
}
match = Regex.Match(text2, pattern);
if (match.Success)
{
Console.WriteLine("prefix {0} suffix {1}.",
match.Groups[1].Value, match.Groups[2].Value);
}
Console.ReadLine();
}
答案 1 :(得分:0)
匹配的基本正则表达式是:
/(\d+Z)\s*?([^ ]+)/
反向引用1包含\ d + Z,而反向引用2包含第二个字符串。 (在你的例子中为10Z)。该网站解释了特定于C#http://www.regular-expressions.info/dotnet.html的正则表达式。如果您需要任何帮助来捕获/使用您的反向引用,请告诉我。
答案 2 :(得分:0)
我真的不知道你想做什么:
大概:
(\d+[a-zA-Z])\s*\(d+[a-zA-Z])
你是什么意思? $ 1和$ 2有您的零件。