C# 正则表达式从C中的模式中提取文本#
我有一个字符串模式,其中包含一个ID和文本,使我们的员工更容易标记 在我们的CMS中创建“花式”按钮的模式是: (按钮\u部分\u ID:文本) 示例: (按钮第25节:这是一个奇特的按钮) 如何提取该模式中的“这是一个奇特的按钮”部分?模式总是一样的。我试着做一些子字符串的事情,但很快就变得复杂了C# 正则表达式从C中的模式中提取文本#,c#,regex,pattern-matching,C#,Regex,Pattern Matching,我有一个字符串模式,其中包含一个ID和文本,使我们的员工更容易标记 在我们的CMS中创建“花式”按钮的模式是: (按钮\u部分\u ID:文本) 示例: (按钮第25节:这是一个奇特的按钮) 如何提取该模式中的“这是一个奇特的按钮”部分?模式总是一样的。我试着做一些子字符串的事情,但很快就变得复杂了 任何帮助都将不胜感激 如果文本始终采用您指定的格式,则只需修剪括号,然后使用:: var res = input.Trim('(', ')').Split(':')[1]; 如果字符串是子字符串,
任何帮助都将不胜感激 如果文本始终采用您指定的格式,则只需修剪括号,然后使用
:
:
var res = input.Trim('(', ')').Split(':')[1];
如果字符串是子字符串,请使用正则表达式:
var match = Regex.Match(input, @"\(button_section_\d+:([^()]+)\)");
var res = match.Success ? match.Groups[1].Value : "";
看
说明:
-文字\(按钮部分)
(按钮部分)
-1个或多个数字\d+
-冒号:
-第1组捕获1+个字符,而不是([^()]+)
和(
(您可以替换为)
,以使匹配更安全,并允许空字符串和([^)]*)
在此值内)(
- )
)`-文字
var match = Regex.Matches(input, @"\(button_section_..:(.*)\)");
大括号定义了一个匹配组,它将提供按钮部分和最后一个大括号之间的所有内容。子字符串变得复杂了吗?可能是因为你首先需要修剪
(
和)
。使用字符串。在:
上拆分,然后修剪结尾的右括号。@Baldrick如果东西是用C#写的,我永远不知道文本是什么。所以我不能只做一个字符串。拆分整个示例,因为我只知道button\u section\u ID部分。我添加了一些解释。请注意,[^()]+
不允许空字符串和(
从(
到)
。替换为[^]*
以匹配空字符串和(
和第一个)
。