Как заменить escape-символы в регулярном выражении?

StackOverflow https://stackoverflow.com/questions/1637227

  •  06-07-2019
  •  | 
  •  

Вопрос

Я снова ударился о стену.

Как заменить escape-символы с помощью регулярных выражений?Если символ табуляции ( ) встречается более двух раз, я хочу заменить эти два или более появления одним .Например, если появляется , я хочу заменить его только на .Как это сделать?

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

Я использую С# для чтения текстового файла и регулярных выражений.Когда я открываю текстовый файл (файл с расширением txt), я получаю обычный вид файла.Но когда я читаю тот же файл с помощью «textReader» и сохраняю его в строку, я получаю примерно такой текст:

О К\т\т\т\т\т\тЭлектронная почта:
k.o@gmail.com Телефон:+ 91
992 Сводка опыта
Бизнес-аналитика и данные
проектировщик склада с более чем 6
лет опыта работы в OLAP
Проект. Технологии Ниже
список важных программных продуктов
и инструменты, которыми я работал
с. Программное обеспечение
Продукты \a \aРаботающие
Системы: WINDOWS NT, WINDOWS 2000,
UNIX Управление базами данных
Системы: Oracle 8i, Oracle 9i, Oracle
10g, SQL-Server 7.0, DB2 Программное обеспечение
Пакеты: VSS, ER Win, M1 Четвёртый
Язык генерации: PL/SQL,
SQL*PLUS Инструменты и
Технологии: Склад Oracle
Строитель 10.1.0.4.0, ORACLE 9i AS,
Этап данных отчетов ORACLE Discoverer
8.0, Fast Track 8.5, DB@ Cube, JavaScript, JSP, JDEV, BI BEANS, ASP,
ASP.NET, Аб
Начальное \a \a\v \fНазначения The
Подробности различных заданий
которые я обрабатывал, перечислены здесь,
в хронологическом порядке
порядок. Имя \aЭйвери Деннисон Данные
Складирование \a \aКлиент \aAvery
Деннисон, он бросает вызов проекту
заключается в подпитке EDW из существующих
склады, на которых хранятся данные
агрегированный
уровень. \a \a Имя \aAOL BI
(Омнитюра)\ритмовая команда.Проектирование,
кодирование и тестирование вместе с
координация с выездной командой.
\a \aИнструменты и технологии \aUnix
Платформа Oracle 10g, Py.Не только
предоставление правильного требования, но
также производительность должна быть в
приемлемый
диапазон. \a \a Имя \aAIW
События (ABSA) \a \aClient \aABSA,
Южная Африка \a \aP

то есть все escape-символы, такие как \s, , \f, видимы.Из-за этого регулярное выражение, которое работает с обычным текстом, не работает, когда я читаю тот же текст в строковую переменную.

Кто-нибудь знает, как решить эту проблему?

Спасибо

У меня есть еще один запрос.Я хочу сопоставить текст в конце строки.Я пытался использовать для этого $.Например, чтобы сопоставить текст, оканчивающийся на «назначение», я использовал присвоение регулярного выражения $. Оно работало с обычным текстом.Но когда я запускаю это регулярное выражение для текста, заданного потоком чтения, это регулярное выражение не работает.Программа чтения потоков выдает строки типа Assignments \f. Как сопоставить конец или начало строки с текстом такого типа?

Это было полезно?

Решение

Вы пытаетесь сопоставить строку "\r", верно?Для этого вам придется экранировать escape-символ:

"(\\r)*"

Это выражение будет соответствовать "\r" любое количество раз.Это работает, потому что "\\" убегает в буквальном смысле "\".Вы можете применить ту же идею для соответствия "\t", слишком.

Другие советы

/\t{2,}/\t/

заменяет две или более табуляции одним символом.

Для символа табуляции используйте что-то вроде этого:

/(\t)*/\1/g
  1. Создайте группу с одним символом (символом табуляции) и сопоставьте его как можно больше.
  2. Замените полное совпадение одним символом
  3. (Глобально) используйте шаблон для полного текста.

Затем вы можете использовать то же выражение для других экранированных символов, которые хотите заменить.

Вы могли бы заменить \\t\\t\\t с \\t{3}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top