我之前从未使用过正则表达式。我很高兴在论坛上看到类似的问题但不完全是我正在寻找的问题
我有一个像下面这样的字符串。需要获得花括号之间的值
例如:“{name}{name@gmail.com}”
我需要获得以下分裂字符串。
name和name@gmail.com
我尝试了以下内容,它给了我相同的字符串。
string s = "{name}{name@gmail.com}";
string pattern = "({})";
string[] result = Regex.Split(s, pattern);
答案 0 :(得分:27)
使用Matches
Regex
而不是Split
轻松完成此操作:
string input = "{name}{name@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}
}
答案 1 :(得分:17)
正在使用正则表达式吗?在这个特定的例子中,我会写:
s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries)
答案 2 :(得分:0)
你去吧
string s = "{name}{name@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 = "{name}{name@gmail.com}";
s = s.TrimStart('{');
s = s.TrimEnd('}');
string pattern = "}{";
string[] result = Regex.Split(s, pattern);