我有一个带有列表框的表单,在此列表框中,我有来自.xml文件的数据。
当我选择一个输入时,我会使用:
string s = lstCust.SelectedItem.ToString();
它给我:“ John Doe,JohnDoe @ stack.io电话:00336598745”
现在,我只想获取邮件地址,因此我正在使用此Regex进行尝试:
@"([A-Za-z0-9._ % -] +@[A-Za-z0-9.-] +\.[a-zA-Z]{2,4})*"
使用此方法:
string mail = Regex.Match(s, @"([A-Za-z0-9._ % -] +@[A-Za-z0-9.-] +\.[a-zA-Z]{2,4})*").Value;
我确定我的正则表达式可以正常工作,因为
Regex.Match(s, @"([A-Za-z0-9._ % -] +@[A-Za-z0-9.-] +\.[a-zA-Z]{2,4})*").Success.ToString();
给我一个true
。
但是我的var mail 的值始终等于“”(空)。
关于我在做什么错的任何想法吗?
Thx
答案 0 :(得分:4)
您的正则表达式模式中有空格阻止其匹配。删除空格和末尾的*
string mail = Regex.Match(s, @"([A-Za-z0-9._ % -]+@[A-Za-z0-9.-]+\.[a-zA-Z]{2,4})").Value;
答案 1 :(得分:1)
尝试以下正则表达式。
([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)
它将通过给定字符串 John Doe,JohnDoe@stack.io电话:00336598745
给您发送电子邮件 JohnDoe@stack.io答案 2 :(得分:0)
您的表达式实际上不匹配。捕获组后面有df = pd.read_csv(
file_path,
error_bad_lines=True,
sep = ';',
decimal=',',
parse_dates=list(parse_dates)
)
(0个或多个事件)。因为该表达式实际上不匹配,所以它在捕获组中找到了0个出现的表达式,但是由于KeyError: 0
被允许,因此匹配成功。
如果您要匹配的字符串中只有一个电子邮件地址。删除末尾的*,并尝试找出正则表达式实际上不起作用的原因。