首页 > 解决方案 > 匹配单个字符串中的许多模式

问题描述

我正在尝试找到与所有模式匹配的字符串。

代码:

import re
mail_li = ['lokesh.g@uni-passau.de',
'lokesh dot gat uni-passau dot de',
'lokesg.g(at)uni-passau.de',
'lokesh.g(at) uni-passau.de',
'onefullword@gw.uni-passau.de',
'lokesh(dot) g(at) uni-passau (dot) de',
       '@laskdjak']


regex = r"(de$)(@)"


for i in mail_li:

    if(re.findall(regex,i)):
       print(i)

我想检查所有条件,例如:

  1. @ 符号或 at 或 (at)

  2. 点或 .de

  3. 德在最后

我试图编写正则表达式,但它不能正常工作。有人可以帮忙吗?

标签: pythonregexpython-3.x

解决方案


以下正则表达式将匹配:

  1. @或者(at)

  2. dot或者.

  3. de最后

  4. 没有空格的文本

^(?=.*?\b(?:@|\(at\))\b)(?=.*?\b(?:\.|dot)\b).*(?<=de)$

然而,这个正则表达式也将匹配email@un.passde这是不希望的。因此,如果我们将要求修改为:

  1. @或者(at)

  2. (dot)de.de最后

  3. 没有空格的文本

我们得到正则表达式:

^(?=.*?\b(?:@|\(at\))\b).*(?=\b(?:\.|\(dot\))de$).*$


推荐阅读