Как использовать регулярные выражения в C #, в частности, получение данных внутри двойной кавычки? - PullRequest
0 голосов
/ 05 декабря 2009

Например, мы просто хотим получить данные в двойных кавычках из списка строк:

String result = string.Empty;

List<string> strings = new List<string>();
strings.add("string=\"string\"");
strings.add("stringwithspace=\"string with space\"");
strings.add("untrimmedstring=\" untrimmed string\"");
strings.add("anotheruntrimmedstring=\"here it is            \"");
strings.add("number=\"13\"");
strings.add("blank=\"\"");
strings.add("whitespace=\"   \"");

StringBuilder z = new StringBuilder();
foreach(string x in strings){
    if(x has a string inside the doublequote){ //do the regex here
        z.append(x + "\n");
    }
}

и результат будет:

строка = "строка"
stringwithspace = "строка с пробелом"
untrimmedstring = "не обрезанная строка"
anotheruntrimmedstring = "вот оно"
номер = "13"

Как мы можем это сделать?

Или есть ли другие, более простые и оптимизированные способы, чем использование регулярных выражений?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 05 декабря 2009

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

^(\w+)="\s*([^"]+)\s*"$

$2 или matches[2] будет содержать обрезанную строку - убедитесь, что ее длина не равна нулю, замените всю строку на $1="$2" и добавьте ее (я не говорю на c #)

Это регулярное выражение предполагает, что

  1. Часть перед = - это одно слово, состоящее только из буквенно-цифровых символов и символов подчеркивания.
  2. Строка внутри двойных кавычек не содержит двойных кавычек.
0 голосов
/ 05 декабря 2009
var regex = new Regex(@"\""([^\""]*)\""");
foreach(string x in strings)
{
    var matches = regex.Matches(x);
    if (matches.Count > 0)
    {
        var matchedValue = matches[0].Groups[1].Value;
        z.Append(matchedValue);
    }
}
0 голосов
/ 05 декабря 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...