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

发布于 2024-12-09 19:06:45 字数 360 浏览 0 评论 0原文

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

COMPANY NAME - username (Name Surname).

在这个例子中,什么样的正则表达式会给我 -( 之间的 username (不带空格)?

它是 ASP. NET C# 如果有什么区别的话,提前致谢

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

Short question, but can't make it work. I have a string:

COMPANY NAME - username (Name Surname).

What kind of regex will give me username (without spaces) from between - and ( in such example?

It's ASP.NET C# if it makes any difference. Thanks in advance !

EDIT :
The company name is a string with possible spaces. Username is without spaces. The characters - and ( are present only in these 2 places. I thought it was 100% obvious since I gave such example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

小镇女孩 2024-12-16 19:06:45
var match = Regex.Match(
    "COMPANY - ltd (NAME) - username (Name Surname)", 
    @"^.* - (.*?) \(.*\)$"
);
var username = match.Groups[1].Value;

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

通过使用.*? (惰性量词)这个正则表达式对奇怪的“东西”有很强的抵抗力,比如我用作测试的东西。

与测试的链接。跳过每一行以查看捕获组。

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

If your line ends with a . then the Regex is @"^.* - (.*?) \(.*\)\.$"

Through the use of .*? (the lazy quantifier) this Regex is quite resistant to strange "things" like the one I'm using as a test.

Link with tests. Pass over each row to see the capture group.

提笔落墨 2024-12-16 19:06:45
string resultString = null;
try {
    resultString = Regex.Match(subjectString, @"-\s+(\S*)\s*\(").Groups[1].Value;
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

输出:用户名

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

Output : username

逆流 2024-12-16 19:06:45

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

http://youtu.be/C2zm0roE-Uc

You can watch the below youtube regular expression video , i am sure the above question you can answer it yourself.

http://youtu.be/C2zm0roE-Uc

笙痞 2024-12-16 19:06:45

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

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

It's easy to test regexes with grep:

kent$  echo "COMPANY NAME - username (Name Surname)."|grep -Po '(?<=- ).*(?= \()'
username
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文