我有一个简单的字符串
testteststete(segment1)tete(segment2)sttes323testte(segment3)eteste
我需要得到(segment2)。每个段可以是任何文本。我试着用这个正则表达式
\(.+\)
。但我得到了这个结果
我怎么能得到(segment2)? PS:我想用括号中的所有段
答案 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
正则表达式匹配
\(
- 开场(
[^)]*
- 除)
\)
- 结束)
。答案 1 :(得分:1)
我无法测试它,但这应该可行:
total = 0
for i in CL:
total += i.price
答案 2 :(得分:1)
答案 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);