string pattern = @"\([^\)]*\)";
string str = "w2fwf(123)wfw(242)wfgwf)fw";
for (int i = 0; i < matches.Count; i++)
{
Console.WriteLine(matches.Value);
}
Регулярные выражения
Код:
Проблема в том, что он возвращает подстроки вместе со скобками. Как сделать, чтобы возвращались подстроки без скобок, и можно было бы не делать отдельных дополнительных преобразований?
Код:
private static Regex pattern = new Regex(@"\((?<val>.*?)\)", RegexOptions.Compiled | RegexOptions.Singleline);
foreach(var m in pattern.Matches(str)) {
if(m.Success) {
var val = m.Groups["val"].Value; // то что между скобок
}
}
foreach(var m in pattern.Matches(str)) {
if(m.Success) {
var val = m.Groups["val"].Value; // то что между скобок
}
}
Код:
string pattern = @"(?<=\().*?(?=\))";
//added:
hardcase первый написал)
Цитата: hardcase
Код:
private static Regex pattern = new Regex(@"\((?<val>.*?)\)", RegexOptions.Compiled | RegexOptions.Singleline);
foreach(var m in pattern.Matches(str)) {
if(m.Success) {
var val = m.Groups["val"].Value; // то что между скобок
}
}
foreach(var m in pattern.Matches(str)) {
if(m.Success) {
var val = m.Groups["val"].Value; // то что между скобок
}
}
Цитата: bagie2
мой вариант:
//added:
hardcase первый написал)
Код:
string pattern = @"(?<=\().*?(?=\))";
//added:
hardcase первый написал)
Спасибо! Оба варианта работают. Но мне больше нравится второй вариант, без группировок, его буду использовать.
//Надо все-таки изучить эти регэкспы... Не подскажите качественную литературу на эту тему? Если на примерах C# будет, то вообще супер.
Цитата: Cybernetic
Спасибо! Оба варианта работают. Но мне больше нравится второй вариант, без группировок, его буду использовать.
Группировки используются в обоих случаях, а мой вариант еще и легче читается.