如何使用正则表达式删除单引号前后的特定字符

时间:2019-02-01 04:12:08

标签: c# regex

我有一个带单引号的文本字符串,我想使用正则表达式删除单引号前后的括号。谁能建议我谢谢你。

例如, 我有(name equal '('John')')我期望的结果是name equal '('John')'

3 个答案:

答案 0 :(得分:1)

//使用正则表达式

string input = "(name equal '('John')')";
Regex rx = new Regex(@"^\((.*?)\)$");

Console.WriteLine(rx.Match(input).Groups[1].Value);

//使用子字符串方法

String input= "(name equal '('John')')";
var result = input.Substring (1, input.Length-2);

Console.WriteLine(result); 

结果:

name equal '('John')'

答案 1 :(得分:0)

尝试一下:

var replaced = Regex.Replace("(name equal '('John')')", @"\((.+?'\)')\)", "${1}");

Regex类位于System.Text.RegularExpressions命名空间中。

答案 2 :(得分:0)

(?<! )之后使用消极眼神,在(?! )之前使用消极眼神,如果遇到',则将停止比赛,例如

(?<!')\(|\)(?!')

该示例将其解释为注释:

string pattern =
@"
(?<!')\(     # Match an open paren that does not have a tick behind it
|            # or
\)(?!')      # Match a closed paren tha does not have tick after it
";

var text = "(name equal '('John')')";

 // Ignore Pattern whitespace allows us to comment the pattern ONLY, does not affect processing.
var final = Regex.Replace(text, pattern, string.Empty, RegexOptions.IgnorePatternWhitespace);

结果

  

名称等于'('John')'