在字符串中查找模式

时间:2012-07-07 23:36:04

标签: c# regex asp.net-mvc-3 webforms

在任何给定字符串中找到模式“[Number1,Number2]”并获取Number1和Number2的整数(32位)值:

示例输入:“Foo Bar [45,66] Bash”

示例结果: Number1 = 45 Number2 = 66

我在deitel书中有这个例子,我似乎无法获得Regex Exp。语法正确。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

这应该适用于[number,number]的确切情况:

var match = Regex.Match(input, @"\[(\d+),(\d+)\]");

var first = match.Groups[1].Value;
var second = match.Groups[2].Value;

var result = string.Format("Number1={0} Number2={1}", first, second);

经过测试a myregextester.com

答案 1 :(得分:0)

正则表达式......现在它们非常有用。然而,在标准出台之前,程序员没有在StackOverflow上寻求社区支持的奢侈。实际上......许多程序员在尝试在当天执行简单的字符串搜索时遇到了“堆栈溢出”。

如果要查找字符串中的字符串并且无法使用正则表达式,则必须以非常特定的方式在字符串中搜索表达式。字符串是以空字符结尾的字符数组。该构造是使用字符串类实现的,但在引擎盖下它是一个在最终位置具有空值的字符数组。

假设你有以下字符串:

string arrayOfCharactersToSearch = "This is the null terminated array of characters to search.";

现在假设您要在该字符串中搜索“array”。您必须检查字符串中字符的“块”。但是你不能通过一次移动一个字符然后寻找“数组”来做到这一点,因为它效率低下。您也无法通过查看与“数组”长度相同的块来执行此操作,因为它可能会错过字符组合。

解决方案是按搜索条件的长度推进每个“块”,在本例中为“数组”,除以2,再加上一个:

    *chunk = ( string length / 2 ) + 1*

幸运的是,我们现在有正则表达式,并且所有BS都是为我们完成的,但了解它是如何工作的仍然很重要......对吗?