我刚刚在这里提出解决方案,解决了我在开发过程中遇到的问题,以便从您的正则表达式体验中获得最多的反馈。目标是学习如何减少正则表达式的大小并提高其灵活性。
请出于教育目的,解释您的更正。
问题是:
我有一个字符串,可以包含一些值
的例子此字符串必须使用正则表达式进行验证,以便通过";";"
分别获取不同的地址邮件我到达这个结果:
^(?:((?:[a-zA-Z0-9_\-\.]+)@(?:[a-zA-Z0-9\-]+\.)(?:[a-zA-Z]{2,3}))(\;)?$|(((?:[a-zA-Z0-9_\-\.]+)@(?:[a-zA-Z0-9\-]+\.)(?:[a-zA-Z]{2,3}))(?:\;))+((?:[a-zA-Z0-9_\-\.]+)@(?:[a-zA-Z0-9\-]+\.)(?:[a-zA-Z]{2,3}))(\;)?$)
如果这个正则表达式太长了,那就是因为这个例子:
通过我较小的第一个正则表达式,他不能通过。
我知道我可以用\ w减少[a-zA-Z0-9_-。],但这不是我的主要问题。
是否有一种方法可以制作一些"组"可重复使用只能写一次
((?:[a-zA-Z0-9_\-\.]+)@(?:[a-zA-Z0-9\-]+\.)(?:[a-zA-Z]{2,3}))
并将其重用到同一个正则表达式中?
语言是PHP,但一般来说,正则表达式的问题更广泛。
非常感谢
答案 0 :(得分:1)
我正在使用python,这是我重复使用regex的地方,其中re.compile将编译正则表达式以供进一步使用
prog = re.compile('(\w+@\w+\.\w{2,3})')
s=prog.search('content_to_be_searched1')
if s:
print s.group()
r=prog.search('content_to_be_searched2')
if r:
print r.group()
参考python docs 并查找邮件ID
(\w+@\w+\.\w{2,3})
不知道在php