繁体   English   中英

我怎样才能获得正则表达式的某个细分?

[英]How can I get a certain segment with regex?

我有一个简单的字符串

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

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

在此处输入图片说明

我如何获得(segment2)? PS:我想将所有细分都放在方括号中

在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演示

正则表达式匹配

  • \\( -开头(
  • [^)]* -比其他0个或更多字符)
  • \\) -结束)

我无法对其进行测试,但这可能可以工作:

\([^\)]*\)

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

\(([^)]+)\)

正则演示

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

您可以简单地使用它。 观看演示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM