8

以前に正規表現を使用したことはありません。フォーラムで同様の質問を見ることができましたが、探しているものとはまったく異なります

次のような文字列があります。中括弧の間の値を取得する必要があります

例: 「{name}{name@gmail.com}」

そして、次の分割された文字列を取得する必要があります。

名前と名前@gmail.com

以下を試してみましたが、同じ文字列が返されます。

string s = "{name}{name@gmail.com}";
string pattern = "({})";
string[] result = Regex.Split(s, pattern);
4

3 に答える 3

36

これを簡単に達成する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}
}
于 2013-06-29T11:29:36.463 に答える
16

正規表現の使用は必須ですか? この特定の例では、次のように記述します。

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries)
于 2013-06-29T11:24:16.260 に答える
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);
于 2013-06-29T11:01:56.097 に答える