获取花括号之间的值c#

Posted

技术标签:

【中文标题】获取花括号之间的值c#【英文标题】:Get values between curly braces c# 【发布时间】:2013-06-27 02:22:46 【问题描述】:

我以前从未使用过正则表达式。我很高兴在论坛中看到类似的问题,但不完全是我要找的问题

我有一个如下字符串。需要获取大括号之间的值

例如:“namename@gmail.com”

我需要得到以下拆分的字符串。

姓名和姓名@gmail.com

我尝试了以下方法,它返回了相同的字符串。

string s = "namename@gmail.com";
string pattern = "()";
string[] result = Regex.Split(s, pattern);

【问题讨论】:

这是一个相当不错的创建正则表达式模式/学习正则表达式的工具gskinner.com/RegExr 【参考方案1】:

使用Regex 中的Matches 而不是Split 可以轻松完成此操作:

string input = "namename@gmail.com";
var regex = new Regex("(.*?)");
var matches = regex.Matches(input);
foreach (Match match in matches) //you can loop through your matches like this

  var valueWithoutBrackets = match.Groups[1].Value; // name, name@gmail.com
  var valueWithBrackets = match.Value; // name, name@gmail.com

【讨论】:

有趣,我得到了带括号的匹配项。为什么? //我的匹配项:name、name@gmail.com @Georg 相应地更改了答案。包括一个组来显示带有或不带括号的值。与其他解决方案的不同之处在于 Regex 查找匹配项,而其他答案是直接拆分字符串。【参考方案2】:

必须使用正则表达式吗?在这个特定的例子中,我会写:

s.Split(new char[]  '', '' , StringSplitOptions.RemoveEmptyEntries)

【讨论】:

@F***Bigler 我的印象是正则表达式可以轻松实现这一点,所以我在标题中加入了正则表达式:)。我现在改了标题;) 建议的解决方案是否也将string s = "namename@gmail.com";等字符串视为正确? 我投票太快了……这个解决方案没有提供答案。考虑输入字符串:nameblablaname@gmail.com,数组中还有“blabla”……【参考方案3】:

给你

string s = "namename@gmail.com";
s = s.Substring(1, s.Length - 2);// remove first and last characters
string pattern = "";// split pattern ""
string[] result = Regex.Split(s, pattern);

string s = "namename@gmail.com";
s = s.TrimStart('');
s = s.TrimEnd('');
string pattern = "";
string[] result = Regex.Split(s, pattern);

【讨论】:

它可以工作,但是有没有办法只使用 Regex 模式而不使用 Substring 来获得这个结果? 我想知道是否有任何方法可以仅使用正则表达式模式获取结果而不进行任何其他字符串操作? @Coder 是的,看看我的回答。 ;)

以上是关于获取花括号之间的值c#的主要内容,如果未能解决你的问题,请参考以下文章

花括号在 c# unity中不能正常工作

MVC C# 单个正则表达式来验证花括号和尖括号

忽略花括号中的值

TypeScript - import ... 和 import ... 之间的区别(带花括号)

如何使用双括号或单括号、圆括号、花括号

java:while循环-在进入花括号之间的语句之前使用分号语句?