用正则表达式从字符串中间刮擦

本文关键字:中间 字符串 正则表达式 | 更新日期: 2024-11-03 18:10:37

>我有以下字符串:

名称(名称,内容(内容,内容

,内容),编号)

我需要将部分加粗。有没有办法使用正则表达式来做到这一点?从本质上讲,我认为我需要一种说法:

获取所有字符,直到达到此模式:,数字)

用正则表达式从字符串中间刮擦

你可以尝试简单的一个:

('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;

它必须是正则表达式吗?如果没有,您可以使用子字符串使其更具可读性。

在您的情况下,如下所示:

var str = "name(name, content(content, content, content), number)";
Console.WriteLine(str.Substring(0, str.IndexOf(',')) + str.Substring(str.LastIndexOf(',')) );

应该工作。(由于标签,我假设它是 C#)

你可以试试这个:

'bcontent'([^')]+[')], 

这意味着:

From the word boundary, find "content(" literally.
Match any character that is not a ), greedily
Match a )
Match a ,

使用以下正则表达式并拉取第一个组结果。

(?:.+?'(.+?, )(.+?'))

这是一个非常小的例子,说明你将如何使用它。

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];
}

只需在那里使用匹配组,然后使用 Match.Groups 访问它。

也许是这样的正则表达式?

.*, (.*')),