在任何给定字符串中找到模式“[Number1,Number2]”并获取Number1和Number2的整数(32位)值:
示例输入:“Foo Bar [45,66] Bash”
示例结果: Number1 = 45 Number2 = 66
我在deitel书中有这个例子,我似乎无法获得Regex Exp。语法正确。任何人都可以帮助我吗?
答案 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都是为我们完成的,但了解它是如何工作的仍然很重要......对吗?