在C#中使用长字符串中的Pattern搜索字符串

时间:2014-02-10 10:29:34

标签: c# regex string search

我需要在字符串中搜索模式。 例如:

string big = "Hello there, I need information for ticket XYZ12345. I also submitted ticket ZYX54321. Please update.";

现在我需要根据模式XXX00000提取/查找/搜索单词,即3 ALPHA和5数字。

有没有办法做到这一点?

即使提取也适合我。

请帮忙。

6 个答案:

答案 0 :(得分:3)

foreach (Match m in Regex.Matches(big, "([A-Za-z]{3}[0-9]{5})"))
{
    if (m.Success)
    {
        m.Groups[1].Value // -- here is your match
    }
}

答案 1 :(得分:0)

这个怎么样?

([XYZ]{3}[0-9]{5})

您可以使用Regex Tester来测试您的表达式。

答案 2 :(得分:0)

您可以使用简单的正则表达式来匹配以下字符串

([A-Za-z]{3}[0-9]{5})

完整的代码将是:

string strRegex = @"([A-Za-z]{3}[0-9]{5})";
Regex myRegex = new Regex(strRegex, RegexOptions.IgnoreCase);
string strTargetString = @"Hello there, I need information for ticket XYZ12345. I also submitted ticket ZYX54321. Please update.";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
    // Add your code here
  }
}

答案 3 :(得分:0)

您可以随时为请求使用聊天扩展程序。

从没有任何上下文的句子中提取所需信息 你可以使用正则表达式。

您可以使用http://rubular.com/进行测试, 一个例子是

...[0-9]

会找到XXX00000

希望有所帮助。

答案 4 :(得分:0)

使用正则表达式:

string ticketNumber = string.Empty;
var match = Regex.Match(myString,@"[A-Za-z]{3}\d{5}");

if(match.Success)
{
    ticketNumber = match.Value;
}

答案 5 :(得分:0)

这是一个正则表达式:

var str = "ABCD12345 ABC123456 ABC12345 XYZ98765";
foreach (Match m in Regex.Matches(str, @"(?<![A-Z])[A-Z]{3}[0-9]{5}(?![0-9])"))
    Console.WriteLine(m.Value);

额外的位是零宽度负面后视((?<![A-Z]))和前瞻((?![0-9]))表达式,以确保您不会捕获额外的数字或字母。以上示例仅捕获第三和第四部分,但不捕获第一部分和第二部分。一个简单的[A-Z]{3}[0-9]{5}捕获至少指定数量的字符或更多