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
和capture0=com
,类似于组2持有1=net
和域。
捕获,为什么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 . . .