我有一个字符串,我试图匹配正则表达式在C#中。C#正则表达式不匹配Regex101
字符串是Hello1004,"7"
。
我与
var reg = new Regex(@"hello\s*\[?\s*,?\s*(?<group1>\d+)\s*,\s*""(?<group2>[^""]+)""", RegexOptions.IgnoreCase);
创建的正则表达式(可能有多个空格,一个[
或1004
前,
。)
1004
可能并不总是1004
,但它总是会一个4位数字。
我想要得到的是:
- 组1:
1004
- 组2:
7
你可以看到一个Regex101演示here。
它完美的演示,但这样做
foreach (var match in reg.Matches(text))
{
var group1 = match.Groups["group1"]?.Value;
var group2 = match.Groups["group2"]?.Value;
}
group1
是空当和group2
中有1004
。如果我在Hello
和1004
之间放置一个空格,它可以在C#中正常工作。
任何人都可以解释为什么我得到这两者之间的差异?
我使用Visual Studio 2017年,NET框架4
见http://ideone.com/FA8WNg,似乎工作。 –
同样在这里。在LinqPad进行测试: var s = @“Hello1004”,“7”“”; \t \t var reg = new Regex(@“hello \ s * \ [?\ s *,?\ s *(? \ d +)\ s *,\ s *”“(? [^”“] + )“”“,RegexOptions.IgnoreCase); \t \t reg.Match(s)。倾倒(); –
Vidar
@WiktorStribiżew嗯......这似乎工作。但是,这绝对不适用于我的实际应用程序。如果适用,我将使用我的.NET版本更新这个问题。 –