c# - 无法获取字符串中正则表达式匹配的值

标签 c# regex string

我有一个带有列表框的表单,在此列表框中我有来自 .xml 文件的数据。

当我选择一个输入时,我会在 var 字符串中获取该输入的值:

string s = lstCust.SelectedItem.ToString();

它给了我:“John Doe,[email protected]电话:00336598745”

现在我只想获取邮件地址,因此我正在尝试使用此正则表达式:

@"([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 的值始终等于“”(空)。

知道我做错了什么吗?

谢谢

最佳答案

您的正则表达式模式中存在空格,导致其无法匹配。删除末尾的空格和*

string mail = Regex.Match(s, @"([A-Za-z0-9._ % -]+@[A-Za-z0-9.-]+\.[a-zA-Z]{2,4})").Value;

Regex Storm Example

关于c# - 无法获取字符串中正则表达式匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56079312/

相关文章:

javascript - 在为 asp 隐藏字段赋值时,转义字符被清除

java - 从字符串中删除多个子字符串 - Java

javascript - 添加参数到 windows.location 现在页面不想重定向到所需的表单

c# - Mono Cecil 添加缺少的程序集

javascript - 使用 System.IdentityModel.Tokens.Jwt 验证在 C# 中生成的 token

用于查找 CSV 数字的 MySQL 正则表达式

c# - 使用 Dapper QueryAsync 方法时 connection.OpenAsync 和 connection.Open 之间的区别

java - 来自缓存字符串的 Pattern.compile() 与缓存已编译模式

regex - 如何使用 RegularExpressions 替换基于模式的匹配项,但保留值?

c - 字符串打乱 - 替换无法正常工作的字符