【发布时间】:2009-09-07 08:30:40
【问题描述】:
我正在寻找一个执行以下操作的正则表达式:
INPUT: User Name (email@address.com)
OUTPUT: User Name
实现这一目标的最佳方法是什么?使用正则表达式提取括号内的文本并替换 this 和任何 )( 字符?
【问题讨论】:
我正在寻找一个执行以下操作的正则表达式:
INPUT: User Name (email@address.com)
OUTPUT: User Name
实现这一目标的最佳方法是什么?使用正则表达式提取括号内的文本并替换 this 和任何 )( 字符?
【问题讨论】:
这应该可以完成工作:
var input = "User Name (email@address.com)";
var output = Regex.Replace(input, @" ?\(.*?\)", string.Empty);
注意 ( 和 ) 字符的转义,以免它们被识别为组标记。
【讨论】:
您的意思是要输出用户名而不是电子邮件地址吗?无论哪种情况,您都不需要 正则表达式。例如,假设输入总是格式正确的,因此省略了任何错误检查,
string output = input.Substring(0, input.IndexOf(" ("))
将为您提供用户名。如果您确实想要电子邮件地址,也无需借助正则表达式即可获得:
int n;
string output = input.Substring(n = 1 + input.IndexOf('('),
input.IndexOf(')') - n)
【讨论】:
我只是提供另一种方法来做到这一点,虽然我自己会使用正则表达式,因为这很笨重:
string output = input.Split('(')[0].TrimEnd();
【讨论】: