【发布时间】:2011-12-08 21:26:24
【问题描述】:
我试图弄清楚如何编写一个可以匹配“3Z10Z”和“3Z 10Z”的模式,然后返回“3Z”。 (稍后我将编写返回 10Z 部分的模式……)。
我尝试使用 @"\d+Z\s*\B" 之类的东西来尝试抓住第一部分,但没有骰子。如果可能的话,我的一个想法是让它从左到右阅读并返回它找到的第一个 @"\d+Z" 。为了稍后获得“10Z”部分,我需要它从右到左阅读......
非常感谢任何帮助!
【问题讨论】:
我试图弄清楚如何编写一个可以匹配“3Z10Z”和“3Z 10Z”的模式,然后返回“3Z”。 (稍后我将编写返回 10Z 部分的模式……)。
我尝试使用 @"\d+Z\s*\B" 之类的东西来尝试抓住第一部分,但没有骰子。如果可能的话,我的一个想法是让它从左到右阅读并返回它找到的第一个 @"\d+Z" 。为了稍后获得“10Z”部分,我需要它从右到左阅读......
非常感谢任何帮助!
【问题讨论】:
你试过@"(\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();
}
【讨论】:
匹配的基本正则表达式是:
/(\d+Z)\s*?([^ ]+)/
back-reference 1 包含您的 \d+Z,而 back-reference 2 包含您的第二个字符串。 (在您的示例中为 10Z)。该站点解释了特定于 C# http://www.regular-expressions.info/dotnet.html 的正则表达式。如果您在捕获/使用反向引用时需要任何帮助,请告诉我。
【讨论】:
我真的不知道你想做什么:
大概:
(\d+[a-zA-Z])\s*\(d+[a-zA-Z])
是你的意思吗? $1 和 $2 有你的部分。
【讨论】: