正则表达式提取2个不同的字符和字符串之间的字符串

时间:2011-10-13 12:54:58

标签: c# asp.net regex pattern-matching

简短的问题,但无法使其发挥作用。我有一个字符串:

COMPANY NAME - username (Name Surname).

在这样的示例中,username-之间的哪种正则表达式会给我((不含空格)?

它是ASP.NET C#,如果它有任何区别。提前谢谢!

编辑: 公司名称是一个包含可能空格的字符串。用户名没有空格。字符-(仅出现在这两个地方。我认为这是100%明显,因为我给出了这样的例子。

4 个答案:

答案 0 :(得分:3)

string resultString = null;
try {
    resultString = Regex.Match(subjectString, @"-\s+(\S*)\s*\(").Groups[1].Value;
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

输出:username

答案 1 :(得分:3)

var match = Regex.Match(
    "COMPANY - ltd (NAME) - username (Name Surname)", 
    @"^.* - (.*?) \(.*\)$"
);
var username = match.Groups[1].Value;

如果您的行以.结尾,那么正则表达式为@"^.* - (.*?) \(.*\)\.$"

通过使用.*?(懒惰量词),这个正则表达式对我用作测试的奇怪“事物”非常有抵抗力。

Link进行测试。遍历每一行以查看捕获组。

答案 2 :(得分:0)

使用grep测试正则表达式很容易:

kent$  echo "COMPANY NAME - username (Name Surname)."|grep -Po '(?<=- ).*(?= \()'
username

答案 3 :(得分:0)

您可以观看下面的youtube正则表达式视频,我相信您可以自己回答上述问题。

http://youtu.be/C2zm0roE-Uc