我有以下字符串:
名称(名称,内容(内容,内容,内容),编号)
我需要加粗的部分。有没有办法使用正则表达式来做到这一点?本质上,我认为我需要一种说法:
取所有字符,直到命中此模式:,数字)
我有以下字符串:
名称(名称,内容(内容,内容,内容),编号)
我需要加粗的部分。有没有办法使用正则表达式来做到这一点?本质上,我认为我需要一种说法:
取所有字符,直到命中此模式:,数字)
您可以尝试简单的一种:
(\w+\([^\(\)]*\))
和你的代码:
var result = Regex.Match(inputString,
@"(\w+\([^\(\)]*\))")
.Groups[1].Value;
解释:
\w+ word characters (a-z, A-Z, 0-9, _)
(1 or more times)
\( character '('
[^\(\)]* any character except: '\(', '\)'
(0 or more times)
\) character ')'
或者这个完整模式:
\w+\s*\(?<yourCon>\w+,\s*([^\)]*\))\s*,\s*\w+\s*\)
你的代码是这样的:
var result = Regex.Match(inputString,
@"\w+\s*\(?<yourCon>\w+,\s*([^\)]*\))\s*,\s*\w+\s*\)")
.Groups["yourCont"].Value;
你可以试试这个:
\bcontent\([^\)]+[\)],
它的意思是:
From the word boundary, find "content(" literally.
Match any character that is not a ), greedily
Match a )
Match a ,
它必须是正则表达式吗?如果不是,您可能会使用子字符串使其更具可读性。
在您的情况下,例如:
var str = "name(name, content(content, content, content), number)";
Console.WriteLine(str.Substring(0, str.IndexOf(',')) + str.Substring(str.LastIndexOf(',')) );
应该管用。(由于标签,我认为它是 C#)
使用以下正则表达式并提取第一组结果。
(?:.+?\(.+?, )(.+?\))
这是一个非常小的示例,说明您将如何使用它。
var input = "name(name, content(content, content, content), number)
var pattern = @"(?:.+?\(.+?, )(.+?\))";
var results = Regex.Match(input, pattern);
if (results.Success)
{
var value = results.Groups[0];
}