在任何给定字符串中查找模式“[Number1, Number2]”,并获取 Number1 和 Number2 的整数(32 位)值:
示例输入:“Foo Bar [45,66] Bash”
示例结果:Number1 = 45 Number2 = 66
我的 deitel 书中有这个例子,但我似乎无法获得 Regex Exp。语法正确。谁能帮我吗?
在任何给定字符串中查找模式“[Number1, Number2]”,并获取 Number1 和 Number2 的整数(32 位)值:
示例输入:“Foo Bar [45,66] Bash”
示例结果:Number1 = 45 Number2 = 66
我的 deitel 书中有这个例子,但我似乎无法获得 Regex Exp。语法正确。谁能帮我吗?
这应该适用于您的确切情况[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);
正则表达式......它们现在非常有用。然而,在标准出台之前,程序员并没有在 StackOverflow 上寻求社区支持的奢侈。事实上......许多程序员在过去尝试执行简单的字符串搜索时遇到了“堆栈溢出”。
如果你想在一个字符串中找到一个字符串并且你没有能力使用正则表达式,你必须以一种非常具体的方式在字符串中搜索表达式。字符串是一个以空字符结尾的字符数组。该构造是用字符串类实现的,但在底层它是一个字符数组,最终位置为空值。
假设您有以下字符串:
string arrayOfCharactersToSearch = "This is the null terminated array of characters to search.";
现在假设您想在该字符串中搜索“array”。您必须检查字符串中字符的“块”。但是你不能通过一次移动一个字符然后寻找“数组”来做到这一点,因为它效率低下。您也不能通过查看与“数组”长度相同的块来做到这一点,因为它可能会丢失字符组合。
解决方案是按搜索条件的长度推进每个“块”,在本例中为“数组”,除以二加一:
*chunk = ( string length / 2 ) + 1*
幸运的是,我们现在有了正则表达式,所有的 BS 都在后台为我们完成了,但理解它是如何工作的仍然很重要......对吗?