C# 正则表达式-匹配与组

C# 正则表达式-匹配与组,c#,regex,C#,Regex,我很抱歉,如果这将属于重复,但我看不到这些回答我的问题 请您帮忙解释一下: 仅为name保留的匹配或捕获在哪里?模式的初始部分[A-Za-z0-9\\-\.]+没有在括号中显示,因此我理解它不会是一个组,那么名称如何被捕获并作为匹配0的一个组件保存 如果我将字符串t2替换为name@domain.com alt@yahoo.net和模式到^([A-Za-z0-9\-\.\]+@([A-Za-z0-9\-])+)+([A-Za-z\-])+)+$ 我希望有2个匹配项:每个完整的电子邮件地址对应

我很抱歉,如果这将属于重复,但我看不到这些回答我的问题

请您帮忙解释一下:

  • 仅为
    name
    保留的匹配或捕获在哪里?模式的初始部分
    [A-Za-z0-9\\-\.]+
    没有在括号中显示,因此我理解它不会是一个组,那么
    名称如何被捕获并作为
    匹配0
    的一个组件保存

  • 如果我将字符串
    t2
    替换为
    name@domain.com alt@yahoo.net
    和模式到
    ^([A-Za-z0-9\-\.\]+@([A-Za-z0-9\-])+)+([A-Za-z\-])+)+$

    • 我希望有2个匹配项:每个完整的电子邮件地址对应一个。输出仅显示1个匹配,两个匹配都用空格分隔,为什么
    • 模式应该如何读取以获得2个匹配项,或者该模式的字符串需要不同吗
    • 我看不到组输出的一致性,因为它没有显示另一个组持有capture
      0=com
      和capture
      1=net
      ,类似于组2持有
      域。
      yahoo.
      捕获,为什么
    • 第3组捕获似乎包含第2组捕获0和1的捕获,这就是层次结构的工作方式,有组捕获的捕获吗
  • 代码 上述代码的输出:

    Match 0 holds: name@domain.com
    Group 0 holding: name@domain.com
    Capture 0 holds name@domain.com
    Group 1 holding: domain.
    Capture 0 holds domain.
    Group 2 holding: n
    Capture 0 holds d
    Capture 1 holds o
    Capture 2 holds m
    Capture 3 holds a
    Capture 4 holds i
    Capture 5 holds n
    Group 3 holding: m
    Capture 0 holds c
    Capture 1 holds o
    Capture 2 holds m
    Press any key to continue . . .
    
    如果字符串
    t2=”则输出name@domain.com alt@yahoo.net";和字符串
    p2=@“^([A-Za-z0-9\-\.\]+@([A-Za-z0-9\-])+\)+([A-Za-z\-])+)+$”


    Match
    覆盖整个正则表达式的匹配。正则表达式可以应用于给定的字符串

    Group
    s是
    Match
    的一部分,
    Capture
    s是(如果您指定了一个类似(someRegex)+的组的多次出现)该
    组的所有
    Capture
    s。尝试将
    ([A-Za-z\-])+
    更改为
    ([A-Za-z\-])
    ,看看有什么不同

    示例:

    \w*(123)\w*
    关于
    “asdsa123asdf”

  • 匹配->asdsa123asdf
  • 组->123(=上次捕获)
  • 捕获->123
  • \w*([123])+\w*
    关于
    “asdsa123asdf”

  • 匹配->asdsa123asdf
  • 组->3(=上次捕获)
  • 捕获->1、2、3

  • 有多个站点可测试并显示正则表达式的详细信息,即或

    “那么“名称”如何被捕获并作为匹配0的一个组件保存?”:匹配0是正则表达式匹配的整个字符串<代码>^[A-Za-z0-9\-\.\]+
    是正则表达式的一部分,您可以通过查看来观察。因此,它是匹配的。“我希望有两个匹配项,每个完整的电子邮件地址对应一个。”--您希望这样做,因为您没有阅读文档并了解
    ^
    的含义。现在就去读吧。我投票决定关闭,因为“请把文档大声读给我听”不是一个编程问题。@EdPlunkett,谢谢你的第一个评论,我可以在我粘贴的输出中看到它在匹配0处匹配,但我认为它会作为整个匹配0的子组件保存,类似于组/捕获,我推断并在调试中看到,如果该部分位于()中,它将显示它所在的组,否则它只显示在匹配0中。在你的第二个评论中,我关于^I的注释说输入文本的开头,但是如果删除“^”in@([A-Za-z0-9\-\.\]+@([A-Za-z0-9\-])+\)+([A-Za-z\-])+)+$,我会得到相同的输出,我应该在哪里寻找?嗨@zᴉɹɥƆ变化很明显,非常感谢您的帮助!
    Match 0 holds: name@domain.com
    Group 0 holding: name@domain.com
    Capture 0 holds name@domain.com
    Group 1 holding: domain.
    Capture 0 holds domain.
    Group 2 holding: n
    Capture 0 holds d
    Capture 1 holds o
    Capture 2 holds m
    Capture 3 holds a
    Capture 4 holds i
    Capture 5 holds n
    Group 3 holding: m
    Capture 0 holds c
    Capture 1 holds o
    Capture 2 holds m
    Press any key to continue . . .
    
    Match 0 holds: name@domain.com alt@yahoo.net
    Group 0 holding: name@domain.com alt@yahoo.net
    Capture 0 holds name@domain.com alt@yahoo.net
    Group 1 holding:  alt@yahoo.net
    Capture 0 holds name@domain.com
    Capture 1 holds  alt@yahoo.net
    Group 2 holding: yahoo.
    Capture 0 holds domain.
    Capture 1 holds yahoo.
    Group 3 holding: o
    Capture 0 holds d
    Capture 1 holds o
    Capture 2 holds m
    Capture 3 holds a
    Capture 4 holds i
    Capture 5 holds n
    Capture 6 holds y
    Capture 7 holds a
    Capture 8 holds h
    Capture 9 holds o
    Capture 10 holds o
    Group 4 holding: t
    Capture 0 holds c
    Capture 1 holds o
    Capture 2 holds m
    Capture 3 holds n
    Capture 4 holds e
    Capture 5 holds t
    Press any key to continue . . .