Удалить строки в тексте на английском языке

seowin

Client
Регистрация
02.05.2016
Сообщения
108
Благодарностей
9
Баллы
18
Подскажите регулярку для поиска строк в тексте на английском языке.
При этом основной текст на кириллице, обернутый в html тегах должен быть не тронут.
Также не должны быть удалены строки с картинками <img src="/images/test.jpg" alt="Тестовая картинка." /> .
Сам текст находится в тегах <p></p>.
 
Последнее редактирование:

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 668
Благодарностей
1 342
Баллы
113
Подскажите регулярку для поиска строк в тексте на английском языке.
При этом основной текст на кириллице, обернутый в html тегах должен быть не тронут.
Также не должны быть удалены строки с картинками <img src="/images/test.jpg" alt="Тестовая картинка." /> .
Сам текст находится в тегах <p></p>.
вот ChatGPT написал код:
C#:
string input = @"
            <p>Это пример текста на кириллице. Here is some text in English. Это продолжение текста на кириллице.</p>
            <p>Вот ещё один параграф. Another English sentence.</p>
            <img src=""/images/test.jpg"" alt=""Тестовая картинка."" />
        ";

        // Регулярное выражение для удаления английских слов из параграфов
        string pattern = @"(?<=<p[^>]*>).*?(?=<\/p>)";

        // Находим все параграфы и удаляем английские слова из каждого
        string result = input;
        foreach (Match match in Regex.Matches(input, pattern))
        {
            string paragraph = match.Value;
            // Удаляем английские слова и лишние пробелы, но оставляем точки в кириллическом тексте
            string cleanedParagraph = Regex.Replace(paragraph, @"\b[A-Za-z]+\b|\s+", " ").Trim().Replace(" .", ".").Replace("  ", " ");
            result = result.Replace(paragraph, cleanedParagraph);
        }

        // Удаляем лишние точки и пробелы перед точками в конце каждого абзаца
        result = Regex.Replace(result, @"\.+\s*\.", ".");

        // Выводим результат в лог
        project.SendInfoToLog($"Обработанный текст: {result}", true);
после выполнения получаем:

Обработанный текст:
<p>Это пример текста на кириллице. Это продолжение текста на кириллице.</p>
<p>Вот ещё один параграф.</p>
<img src="/images/test.jpg" alt="Тестовая картинка." />

Код вставить в C# кубик. Замените переменные project.Variables["Text"].Value и project.Variables["Result"].Value на ваши.

C#:
string input = project.Variables["Text"].Value;

        // Регулярное выражение для удаления английских слов из параграфов
        string pattern = @"(?<=<p[^>]*>).*?(?=<\/p>)";

        // Находим все параграфы и удаляем английские слова из каждого
        string result = input;
        foreach (Match match in Regex.Matches(input, pattern))
        {
            string paragraph = match.Value;
            // Удаляем английские слова и лишние пробелы, но оставляем точки в кириллическом тексте
            string cleanedParagraph = Regex.Replace(paragraph, @"\b[A-Za-z]+\b|\s+", " ").Trim().Replace(" .", ".").Replace("  ", " ");
            result = result.Replace(paragraph, cleanedParagraph);
        }

        // Удаляем лишние точки и пробелы перед точками в конце каждого абзаца
        result = Regex.Replace(result, @"\.+\s*\.", ".");
        project.Variables["Result"].Value = result;
        
        // Выводим результат в лог
        project.SendInfoToLog($"Обработанный текст: {result}", true);
 
Последнее редактирование:
  • Спасибо
Реакции: djaga и seowin

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)