如何使用正则表达式获得某个细分?

时间:2015-10-23 08:44:56

标签: c# .net regex

我有一个简单的字符串

testteststete(segment1)tete(segment2)sttes323testte(segment3)eteste

我需要得到(segment2)。每个段可以是任何文本。我试着用这个正则表达式 \(.+\)。但我得到了这个结果

Spark SQL programming guide

我怎么能得到(segment2)? PS:我想用括号中的所有段

5 个答案:

答案 0 :(得分:2)

在C#中,您可以匹配所有(...)子字符串,然后使用索引1访问第二个子字符串:

var rx = @"\([^)]*\)";
var matches = Regex.Matches(str, rx).Cast<Match>().Select(p => p.Value).ToList();
var result = matches != null && matches.Count > 1 ? matches[1] : string.Empty;

请参阅IDEONE demo

正则表达式匹配

  • \( - 开场(
  • [^)]* - 除)
  • 以外的0个或多个字符
  • \) - 结束)

答案 1 :(得分:1)

我无法测试它,但这应该可行:

total = 0
for i in CL:
    total += i.price

答案 2 :(得分:1)

您可以尝试使用此正则表达式:

\(([^)]+)\)

<强> REGEX DEMO

答案 3 :(得分:1)

(?<=^[^()]*\([^)]*\)[^()]*\()[^)]*

你可以简单地使用它。See Demo

答案 4 :(得分:1)

var regex = new Regex(@"\(([^)]*)\)", RegexOptions.Compiled);
string secondMatch = regex.Matches(text).Cast<Match>()
    .Select(m => m.Value.Trim('(', ')'))
    .ElementAtOrDefault(1);