用正则表达式从字符串中间刮擦
本文关键字:中间 字符串 正则表达式 | 更新日期: 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
访问它。
也许是这样的正则表达式?
.*, (.*')),