正则表达式组不返回期望值

ca9163d9

我在Visual Studio的C#交互中尝试了以下代码

> using System.Text.RegularExpressions;
> var re = new Regex(@"(\d\d/\d\d?\/\d\d\d\d)");
> var r = re.Match("01/01/2016 02/02/2016").Groups;
> r
GroupCollection(2) { [01/01/2016], [01/01/2016] }

为什么它不返回预期的[01/01/2016], [02/02/2016]

韦斯顿

它似乎包含第一个匹配项两次,因为它Groups[0]包含整个匹配字符串,并且您定义的实际捕获组直到才开始Groups[1]

您将看到具有多个捕获组的更清晰的信息:

> var re = new Regex(@"(\d)-([A-Z])");
> var r = re.Match("5-D").Groups;

> r[0]
{5-D}
    [System.Text.RegularExpressions.Match]: {5-D}
    base {System.Text.RegularExpressions.Capture}: {5-D}
    Captures: {System.Text.RegularExpressions.CaptureCollection}
    Success: true
> r[1]
{5}
    base {System.Text.RegularExpressions.Capture}: {5}
    Captures: {System.Text.RegularExpressions.CaptureCollection}
    Success: true
> r[2]
{D}
    base {System.Text.RegularExpressions.Capture}: {D}
    Captures: {System.Text.RegularExpressions.CaptureCollection}
    Success: true

但是您要根据自己的情况使用 Regex.Matches

在指定的输入字符串中搜索所有出现的正则表达式。

使用群组名称

为了避免0基于索引的混淆和其他混淆,命名组非常有用:

var re = new Regex(@"(?<date>\d\d/\d\d?\/\d\d\d\d)");
var dateGroup = re.Match("01/01/2016").Groups["date"];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式未返回期望值

来自分类Dev

为什么此正则表达式返回期望值的较短版本?

来自分类Dev

正则表达式分组不返回任何值

来自分类Dev

Javascript 正则表达式不返回预期值

来自分类Dev

正则表达式:“AND OR”返回两个组,“ANDOR”不返回任何组

来自分类Dev

正则表达式匹配(如果不...返回不...)

来自分类Dev

组1不匹配每个正则表达式

来自分类Dev

不包含组的Java正则表达式

来自分类Dev

如何告诉正则表达式不匹配组?

来自分类Dev

重构正则表达式以不包含空组

来自分类Dev

不包含组的Java正则表达式

来自分类Dev

Python正则表达式不匹配多个组

来自分类Dev

期望中的正则表达式

来自分类Dev

返回Javascript正则表达式非捕获组

来自分类Dev

Python正则表达式返回非捕获组

来自分类Dev

正则表达式返回2组

来自分类Dev

正则表达式:组或组

来自分类Dev

检索正则表达式匹配组值

来自分类Dev

正则表达式javascript不返回括号

来自分类Dev

正则表达式javascript不返回括号

来自分类Dev

正则表达式不返回任何结果

来自分类Dev

使用正则表达式拆分的字符串不返回任何值

来自分类Dev

正则表达式替换-删除不匹配的值

来自分类Dev

PostgreSQL正则表达式返回多个值

来自分类Dev

正则表达式返回的值不正确

来自分类Dev

正则表达式返回空值

来自分类Dev

正则表达式返回额外的空值

来自分类Dev

正则表达式查找从开始到返回的值

来自分类Dev

正则表达式返回的值不正确