正则表达式提取2个不同字符和字符串之间的字符串
问题描述:
简短的问题,但不能使其工作。我有一个字符串:正则表达式提取2个不同字符和字符串之间的字符串
COMPANY NAME - username (Name Surname).
什么样的正则表达式的会给我username
(无空格)从-
和(
之间的这样的例子?
这是ASP.NET C#,如果它有任何区别。提前致谢 !
编辑: 公司名称是一个可能的空格字符串。用户名不含空格。字符-
和(
只出现在这2个地方。自从我举出这样的例子以来,我认为这是100%明显的。
答
var match = Regex.Match(
"COMPANY - ltd (NAME) - username (Name Surname)",
@"^.* - (.*?) \(.*\)$"
);
var username = match.Groups[1].Value;
如果您的线路有.
,则正则表达式的结束是@"^.* - (.*?) \(.*\)\.$"
通过使用.*?
(懒惰的量化r)这个正则表达式对于我用来作为测试的那个奇怪的“东西”很有抵抗力。
Link有测试。传递每一行以查看捕获组。
答
string resultString = null;
try {
resultString = Regex.Match(subjectString, @"-\s+(\S*)\s*\(").Groups[1].Value;
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
输出:username
答
很容易使用grep来测试正则表达式:
kent$ echo "COMPANY NAME - username (Name Surname)."|grep -Po '(?<=-).*(?= \()'
username
'username'是否可以包含空格或括号? –
公司名称是否可以包含连字符或括号? –
是否保证该线路将以完全停止状态结束? –