如果我有像
这样的字符串[1] Bryan Mar
John Doe [2]
Mary [3] Cole
如果它在每个字符串中随机分布,我将如何得到[]内的值。
我在考虑使用正则表达式,但我不知道如何为此示例创建模式。
感谢您的帮助。
更新 []内的数字是32位整数
答案 0 :(得分:1)
你是正确的,使用正则表达式将是解决它的一种方法。试试这个:
class Program
{
static void Main(string[] args)
{
var strings = new string[] { "[1] Bryan Mar", "John Doe [2]", "Mary [3] Cole" };
var re = new Regex(@"^.*\[(\d)\].*$");
foreach (var s in strings)
{
var m = re.Match(s);
if (m.Success)
{
Console.WriteLine(m.Groups[1].Value);
}
}
Console.ReadLine();
}
}
表达式匹配零个或多个字符后跟一个左方括号,后跟一个数字(\d
)和一个右方括号,然后是任意数量的字符。括号括号将捕获的数字添加到正则表达式组,稍后可以访问(m.Groups[1]
)。如果您想知道为什么该组具有索引1
而不是索引0
,那是因为整个字符串始终是组0
。
如果您希望它能够匹配多个数字,只需将表达式更改为:
var re = new Regex(@"^.*\[(\d+)\].*$");