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

时间:2016-06-17 11:36:44

标签: c# regex pattern-matching

我有一个字符串模式,其中包含一个ID和Text,以便我们的员工更容易进行标记。

创造一个"花式"我们的CMS中的按钮是:

  

(button_section_ID:TEXT)

示例

  

(button_section_25:这是一个花哨的按钮)

如何提取"这是一个花哨的按钮"这种模式的一部分?模式将始终相同。我试着做一些子串的东西,但这很复杂很快。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

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

var res = input.Trim('(', ')').Split(':')[1];

如果字符串是子字符串,请使用正则表达式:

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

请参阅this regex demo

enter image description here

<强>解释

  • \(button_section_ - 文字(button_section_
  • \d+ - 一位或多位
  • : - 冒号
  • ([^()]+) - 第1组捕获除()以外的1个以上字符(您可以替换为([^)]*)以使匹配更安全并允许空字符串{{{ 1}}在这个值里面)
  • ()`

答案 1 :(得分:0)

以下.NET正则表达式将为您提供包含具有所需文本的组的匹配项:

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

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

相关问题