我想使用Regex(Python)将以下类型的电子邮件地址解析为三个捕获组:
johndoe @ gmail . com这三个抓捕组是:
johndoe);gmail.com);gmail).的域名这是我写的正则表达式:
^([\w\s\-\/.!#$%&'*+=?^_`{|}~]+)@(([\s\w+]+)\.[\w\s]{2,})$其中:
([\w\s\-\/.!#$%&'*+=?^_`{|}~]+))捕捉局部部分;(([\s\w+]+)\.[\w\s]{2,}))以两个组捕获整个域和域名。表达式有效,但问题是第二和第三捕获组都有尾随空格,即:
johndoe;gmail . com;gmail。有没有一种方法可以从嵌套捕获组中剪短空白空间?
发布于 2022-10-11 14:46:47
如果要在第2组中捕获第3组,就不能避免捕获其中的空白。
那么,为什么不用外部的空格捕获三个独立的组,然后根据需要加入$2\.$3呢?
^\s*?([\w\-\/.!#$%&'*+=?^_`{|}~]+)\s*?@\s*?([\w+]+)\s*?\.\s*?([\w]{2,})$发布于 2022-10-11 15:40:57
我建议您将\s保留在字符类之外,以便分别匹配3部分,然后在您的python代码中分别连接第2和第3捕获组。
^\s*([\w/.!#$%&'*+=?^`{|}~-]+)\s*@\s*([\w-]+)\s*\.\s*(\w{2,})\s*$这将分别给出三个捕获组:
johndoegmailcomRegEx分手:
^:开始\s*:匹配0或空白空间([\w/.!#$%&'*+=?^{}~-+)`:匹配捕获组#1中这些字符的1+\s*:匹配0或空白空间@:匹配一个@\s*:匹配0或空白空间([\w-]+):在捕获组#2中匹配单词字符或连字符的1+\s*:匹配0或空白空间\.:匹配一个点\s*:匹配0或空白空间(\w{2,}):匹配捕获组#3中的2+单词字符\s*:匹配0或空白空间$:结束https://stackoverflow.com/questions/74029832
复制相似问题