C# 正则表达式从C中的模式中提取文本#

C# 正则表达式从C中的模式中提取文本#,c#,regex,pattern-matching,C#,Regex,Pattern Matching,我有一个字符串模式,其中包含一个ID和文本,使我们的员工更容易标记 在我们的CMS中创建“花式”按钮的模式是: (按钮\u部分\u ID:文本) 示例: (按钮第25节:这是一个奇特的按钮) 如何提取该模式中的“这是一个奇特的按钮”部分?模式总是一样的。我试着做一些子字符串的事情,但很快就变得复杂了 任何帮助都将不胜感激 如果文本始终采用您指定的格式,则只需修剪括号,然后使用:: var res = input.Trim('(', ')').Split(':')[1]; 如果字符串是子字符串,

我有一个字符串模式,其中包含一个ID和文本,使我们的员工更容易标记

在我们的CMS中创建“花式”按钮的模式是:

(按钮\u部分\u ID:文本)

示例

(按钮第25节:这是一个奇特的按钮)

如何提取该模式中的“这是一个奇特的按钮”部分?模式总是一样的。我试着做一些子字符串的事情,但很快就变得复杂了


任何帮助都将不胜感激

如果文本始终采用您指定的格式,则只需修剪括号,然后使用

var res = input.Trim('(', ')').Split(':')[1];
如果字符串是子字符串,请使用正则表达式:

var match = Regex.Match(input, @"\(button_section_\d+:([^()]+)\)");
var res = match.Success ? match.Groups[1].Value : "";

说明:

  • \(按钮部分)
    -文字
    (按钮部分)
  • \d+
    -1个或多个数字
  • -冒号
  • ([^()]+)
    -第1组捕获1+个字符,而不是
    (您可以替换为
    ([^)]*)
    ,以使匹配更安全,并允许空字符串和
    在此值内)
  • )
    -文字
    )`

以下.NET正则表达式将为您提供一个匹配项,其中包含一个包含所需文本的组:

var match = Regex.Matches(input, @"\(button_section_..:(.*)\)");

大括号定义了一个匹配组,它将提供按钮部分和最后一个大括号之间的所有内容。

子字符串变得复杂了吗?可能是因为你首先需要修剪
。使用
字符串。在
上拆分
,然后修剪结尾的右括号。@Baldrick如果东西是用C#写的,我永远不知道文本是什么。所以我不能只做一个字符串。拆分整个示例,因为我只知道button\u section\u ID部分。我添加了一些解释。请注意,
[^()]+
不允许空字符串和
。替换为
[^]*
以匹配空字符串和
和第一个