我有一个用于搜索电子邮件的正则表达式:
\b([a-z]\w{1,13}\.)?([a-z]\w{1,13})@([a-z]\w{1,13}\.){1,5}(com|de|sng|hkg|net|appl|it|lu|mc|sg|us|hk|ch)(\b|$|\z|\Z|\n)
它对于不在文件末尾的字符串工作正常,但是当我在文件末尾放置带有电子邮件格式的字符串时,它无法检测到电子邮件。请帮助纠正这个正则表达式。任何帮助都会很棒。
我试过测试的文字:
NX_LOCAL_HOST = @@ XXXXXX @@
NX_USER = @@ YYYYYYY @@
NX_SLUMP_HOST = @@ NX_SLUMP_HOST @@
NX_SLUMP_NAME = 2100
nhbigshow@yahoo.com
NX_MGR_PORTNUM = 2300
NX_KEY = 0x4E580000
NX_SERVER = @@ NX_SERVER @@
@NX_JRE_INSTALL_DIR = @@ NX_JRE_INSTALL_DIR_HOLA_NX @@
DKBO609 @NX_JRE_INSTALL_DIR = @@ NX_JRE_INSTALL_DIR_HOLA_28 @@
NX_DOMSRVR_NAME = ANY_DE
! @ NX_NOFASTCHAN = Deualled Thu Jun 06 11:54:17 2013
NX_LOG = $ NX_LOCAL /日志
NX_SITE = $ NX_LOCAL /网站
@ NX_PREFERENCE_DIR = H:\ USPSD
anhbigshow@yahoo.com
C:\ ABC \ DEF
anhbigshow@gmail.com
它唯一匹配" nhbigshow@yahoo.com"。
答案 0 :(得分:0)
如果你给出一个匹配和不匹配的例子会有所帮助。如果您希望匹配必须以X
结尾的内容,则表达式为X$
。您很可能会在这里找到答案:
http://en.wikipedia.org/wiki/Regular_expression
我有时候会把自己作为复习者来结束。这是一个非常详细的指南。
作为测试,看看它是否只能匹配最后一部分。我感觉你要找的是每个项目以(com|de|sng|hkg|net|appl|it|lu|mc|sg|us|hk|ch)
结尾,然后是一些表示该行结束的分隔符。试试这个:
.*(com|de|sng|hkg|net|appl|it|lu|mc|sg|us|hk|ch)([^a-zA-Z]|$)
我使用问号来表明它是可选的。支架显示该套装中的1件物品将在那里。如果这有帮助,请告诉我。 。*表示“任何字符”可以“0次或更多次”。
您正在寻找的东西应该与此类似。这来自评论中的链接。
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|
biz|info|mobi|name|aero|asia|jobs|museum)\b
答案 1 :(得分:0)
我假设你正在使用python。如果是这种情况,您的regex
将与findall
>>> string
'NX_LOCAL_HOST=@@XXXXXX@@ \nNX_USER=@@YYYYYYY@@ \nNX_SLUMP_HOST=@@NX_SLUMP_HOST@@ \nNX_SLUMP_NAME=2100 \nnhbigshow@yahoo.com \nNX_MGR_PORTNUM=2300 \nNX_KEY=0x4E580000 \nNX_SERVER=@@NX_SERVER@@ \n@NX_JRE_INSTALL_DIR=@@NX_JRE_INSTALL_DIR_HOLA_NX@@\n\n\nDKBO609 @NX_JRE_INSTALL_DIR=@@NX_JRE_INSTALL_DIR_HOLA_28@@\n\n\nNX_DOMSRVR_NAME=ANY_DE \n! @NX_NOFASTCHAN=Deinstalled Thu Jun 06 11:54:17 2013 \nNX_LOG=$NX_LOCAL/log \nNX_SITE=$NX_LOCAL/site \n@NX_PREFERENCE_DIR=H:\\USPSD \nanhbigshow@yahoo.com \nC:\x07bc\\def \nanhbigshow@gmail.com'
>>> regex = re.findall(r"\b([a-z]\w{1,13}\.)?([a-z]\w{1,13})@([a-z]\w{1,13}\.){1,5}(com|de|sng|hkg|net|appl|it|lu|mc|sg|us|hk|ch)(\b|$|\z|\Z|\n)",s)
>>> regex
[('', 'nhbigshow', 'yahoo.', 'com', ''), ('', 'anhbigshow', 'yahoo.', 'com', ''), ('', 'anhbigshow', 'gmail.', 'com', '')]