Как удалить определенный символ до и после одинарных кавычек с помощью регулярных выражений - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть текстовая строка с одинарными кавычками, я хотел бы удалить скобки до и после этих одинарных кавычек с помощью регулярного выражения.Может ли кто-нибудь предложить мне Спасибо.

Например, у меня есть (name equal '('John')') ожидаемый результат - name equal '('John')'

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Используйте отрицательный взгляд позади (?<! ) и отрицательный взгляд вперед (?! ), который остановит совпадение, если встретит ', например

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

В примере это объясняется как комментарий:

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);

Результат

имя равно '(' Джон ')'

0 голосов
/ 16 февраля 2019

// Использование Regex

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')'
0 голосов
/ 01 февраля 2019

Попробуйте:

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

Класс Regex находится в пространстве имен System.Text.RegularExpressions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...