如何使用正则表达式提取字符串中的域?
How to extract the domain in a string by using regex?
我得到一个代表用户数据的字符串。
提取此字符串中域的正确正则表达式是什么?
我知道我必须找到所有包含 2 个字符的字符串,这些字符匹配最后一个“.”之后的条件。在“@”之后。
然而我还是没有实现。
import re
regex = r"@.+\.([a-z]{2}),"
your_string = ("001,Francisca,Dr Jhonaci,jhonadr@abc.com,32yearsold,120.238.225.0\n"
"002,Lavenda,Bocina,lavenboci@banck.ac.uk,50yearsold,121.186.221.182\n"
"003,Laura,Eglington,elinton@python.co.jp,26yearsold,36.55.173.63\n"
"004,Timo,Baum,timobaum@tennis.co.cn,22yearsold,121.121.110.10")
matches = re.finditer(regex, your_string, re.MULTILINE)
for match in matches:
result = match.group(1)
print(result)
在电子邮件后面使用逗号而不是最后一个点。
使用这个正则表达式
@.+\.(\w+)(?<!com),
捕获组将包含您想要的信息。
逗号似乎是字符串中的分隔符。
为了不交叉匹配逗号(以防止匹配太多),也不交叉匹配第二个@char,您可以使用以[^
[=开头的否定字符class 16=]
如果条目也可以位于字符串的末尾,您可以断言 ,
或字符串的末尾。
@[^@,]*\.([A-Za-z]{2})(?=,|$)
import re
regex = r"@[^@,]*\.([A-Za-z]{2})(?=,|$)"
s = ("001,Francisca,Dr Jhonaci,jhonadr@abc.com,32yearsold,120.238.225.0\n"
"002,Lavenda,Bocina,lavenboci@banck.ac.uk,50yearsold,121.186.221.182\n"
"003,Laura,Eglington,elinton@python.co.jp,26yearsold,36.55.173.63\n"
"004,Timo,Baum,timobaum@tennis.co.cn,22yearsold,121.121.110.10")
print(re.findall(regex, s, re.M))
输出
['uk', 'jp', 'cn']
我得到一个代表用户数据的字符串。
提取此字符串中域的正确正则表达式是什么?
我知道我必须找到所有包含 2 个字符的字符串,这些字符匹配最后一个“.”之后的条件。在“@”之后。
然而我还是没有实现。
import re
regex = r"@.+\.([a-z]{2}),"
your_string = ("001,Francisca,Dr Jhonaci,jhonadr@abc.com,32yearsold,120.238.225.0\n"
"002,Lavenda,Bocina,lavenboci@banck.ac.uk,50yearsold,121.186.221.182\n"
"003,Laura,Eglington,elinton@python.co.jp,26yearsold,36.55.173.63\n"
"004,Timo,Baum,timobaum@tennis.co.cn,22yearsold,121.121.110.10")
matches = re.finditer(regex, your_string, re.MULTILINE)
for match in matches:
result = match.group(1)
print(result)
在电子邮件后面使用逗号而不是最后一个点。
使用这个正则表达式
@.+\.(\w+)(?<!com),
捕获组将包含您想要的信息。
逗号似乎是字符串中的分隔符。
为了不交叉匹配逗号(以防止匹配太多),也不交叉匹配第二个@char,您可以使用以[^
[=开头的否定字符class 16=]
如果条目也可以位于字符串的末尾,您可以断言 ,
或字符串的末尾。
@[^@,]*\.([A-Za-z]{2})(?=,|$)
import re
regex = r"@[^@,]*\.([A-Za-z]{2})(?=,|$)"
s = ("001,Francisca,Dr Jhonaci,jhonadr@abc.com,32yearsold,120.238.225.0\n"
"002,Lavenda,Bocina,lavenboci@banck.ac.uk,50yearsold,121.186.221.182\n"
"003,Laura,Eglington,elinton@python.co.jp,26yearsold,36.55.173.63\n"
"004,Timo,Baum,timobaum@tennis.co.cn,22yearsold,121.121.110.10")
print(re.findall(regex, s, re.M))
输出
['uk', 'jp', 'cn']