次の文字列があります。
name(name, content(content, content, content) , number)
そして、太字の部分が必要です。正規表現を使用してこれを行う方法はありますか? 基本的に、私は言い方が必要だと思います:
このパターンがヒットするまですべての文字を取得: , 数字)
次の文字列があります。
name(name, content(content, content, content) , number)
そして、太字の部分が必要です。正規表現を使用してこれを行う方法はありますか? 基本的に、私は言い方が必要だと思います:
このパターンがヒットするまですべての文字を取得: , 数字)
あなたは簡単なものを試すことができます:
(\w+\([^\(\)]*\))
とあなたのコード:
var result = Regex.Match(inputString,
@"(\w+\([^\(\)]*\))")
.Groups[1].Value;
説明:
\w+ word characters (a-z, A-Z, 0-9, _)
(1 or more times)
\( character '('
[^\(\)]* any character except: '\(', '\)'
(0 or more times)
\) character ')'
またはこの完全モード:
\w+\s*\(?<yourCon>\w+,\s*([^\)]*\))\s*,\s*\w+\s*\)
そしてあなたのコードはこのようになります:
var result = Regex.Match(inputString,
@"\w+\s*\(?<yourCon>\w+,\s*([^\)]*\))\s*,\s*\w+\s*\)")
.Groups["yourCont"].Value;
あなたはおそらくこれを試すことができます:
\bcontent\([^\)]+[\)],
その意味は:
From the word boundary, find "content(" literally.
Match any character that is not a ), greedily
Match a )
Match a ,
正規表現である必要がありますか?そうでない場合は、部分文字列を使用して読みやすくすることができます。
あなたの場合、次のようなものです。
var str = "name(name, content(content, content, content), number)";
Console.WriteLine(str.Substring(0, str.IndexOf(',')) + str.Substring(str.LastIndexOf(',')) );
動作するはずです。(タグがあるため、C#だと思います)
次の正規表現を使用して、最初のグループの結果をプルします。
(?:.+?\(.+?, )(.+?\))
そして、これはあなたがそれをどのように使うかについての非常に小さな例です。
var input = "name(name, content(content, content, content), number)
var pattern = @"(?:.+?\(.+?, )(.+?\))";
var results = Regex.Match(input, pattern);
if (results.Success)
{
var value = results.Groups[0];
}