c# Извлечение предложений с использованием регулярных выражений - PullRequest
0 голосов
/ 28 января 2020

Прежде всего, извините, если этот вопрос задавался несколько раз, но я не могу понять, как его решить, даже после проверки существующих ответов. Я новичок в Regexp, и то, что я пытаюсь сделать, это извлечь предложение (я) между двойными кавычками после строки «Перевести», зная, что последняя строка может появиться несколько неизвестных раз, а предложение между двойными кавычками может содержать цифры и специальные символы.

Например, с выражением ниже:

'RadMessageBox.Show(Translate("Problem with arguments"), Translate("Error!"), Translate("Bad digital format, it must be of the form 112.3456E12."), MessageBoxButtons.OK, RadMessageIcon.Error);'

У меня будет:

'Problem with arguments      Error!      Bad digital format, it must be of the form 112.3456E12.'

Ответы [ 3 ]

0 голосов
/ 28 января 2020

Следующее даст вам строки, включая кавычки: "[^["]*.]*.

Если вы хотите удалить их, вы можете использовать простой string.Split('"')

Вы можете попрактиковаться в построении Регестрируйте себя, используя следующий веб-сайт: https://regex101.com/

0 голосов
/ 28 января 2020
const string sent = "RadMessageBox.Show(Translate(\"Problem with arguments\"), Translate(\"Error!\"), Translate(\"Bad digital format, it must be of the form 112.3456E12.\"), MessageBoxButtons.OK, RadMessageIcon.Error);";
const string pattern = "([\"'])(?:\\1|.)*?\\1";

var results = Regex.Matches(sent, pattern);
var sb = new StringBuilder();

foreach (var match in results)
{
    sb.Append(match.ToString().Trim('"') + " ");
}

Console.WriteLine(sb.ToString());

Если я правильно понял вопрос, это рабочий пример

0 голосов
/ 28 января 2020

Dot NET Regex : @"Translate\(""([^""]+)", далее вы должны присоединиться к результатам.

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