Как заменить escape-символы в регулярном выражении?
Вопрос
Я снова ударился о стену.
Как заменить 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
- Создайте группу с одним символом (символом табуляции) и сопоставьте его как можно больше.
- Замените полное совпадение одним символом
- (Глобально) используйте шаблон для полного текста.
Затем вы можете использовать то же выражение для других экранированных символов, которые хотите заменить.
Вы могли бы заменить \\t\\t\\t
с \\t{3}