Regex для поиска данных в определенном столбце строки - PullRequest
6 голосов
/ 17 февраля 2009

Я пытаюсь найти в документе данные по конкретному столбцу. Я пытаюсь использовать:

^.{x}[data to find]

где x - количество столбцов, которые я хочу - 1.

Я не уверен, что делаю что-то не так или мой движок регулярных выражений не поддерживает этот синтаксис. Я пытаюсь использовать Notepad ++, если это полезно.

Ответы [ 2 ]

7 голосов
/ 17 февраля 2009

Обновление 2013-2014 (4-5 лет спустя)

Как упомянуто Аланом Муром в комментариях

Notepad ++ v6.x имеет реальную поддержку регулярных выражений через библиотеку PCRE

См. " Как использовать регулярные выражения в Notepad ++ (учебное пособие) " (Операторы умножения)


Оригинальный ответ (февраль 2009 г.)

Я только что проверил последнюю версию Notepad ++ 5.2 и функцию регулярного выражения .

Я подтверждаю, что у него нет оператора повторения {min,max}, который позволил бы вам указать, сколько раз токен может повторяться.

http://1.bp.blogspot.com/_RrGIVCQs3RU/SHbq1B0wYlI/AAAAAAAAALI/h21UEYMEivc/s400/np%2B%2Breplace.png

Альтернативой будет:

.... [repeat '.' as many time as the number of column you want] ...[data to find]

Вам не нужно ^: по умолчанию регулярные выражения Notepad ++ применяются построчно, а . не соответствует символам eol (\r или \n)


Как Асмор упоминает в комментариях:

Notepad ++, со всеми его замечательными функциями, использует Scintilla и наследует обработку регулярных выражений Scintilla с ее ограниченными регулярными выражениями .

Вы говорите, что регулярные выражения "по умолчанию" применяются построчно. Это подразумевает, что вы можете установить его иначе, но, насколько мне известно (и, пожалуйста, прошу вас, докажите, что я не прав!), Нет возможности создавать многострочные регулярные выражения.

(я согласен, и это основное ограничение)

Другое ограничение Scintilla, оператор ^, действительно важен, так как он привязывает регулярное выражение к началу строки. Скажем, вы хотели сопоставить 3 в третьем столбце. Вы бы хотели, чтобы ^..3, а ..3 соответствовало бы 3 в любом столбце после второго.

0 голосов
/ 17 февраля 2009

Awk гораздо больше подходит для такого рода задач, если у вас есть доступ к нему.

Не похоже, что в notepad ++ есть функция {x} из документации, которую я могу найти.

...