Используя движок регулярных выражений Perl, я не могу понять, как извлечь последний элемент в строке, где элементы разделены, с помощью символа TAB.

Вот пример из файла журнала Process Explorer:

^advapi32.dll\tAdvanced Windows 32 Base API\tMicrosoft Corporation\t5.1.2600.5755\tC:\WINDOWS\system32\advapi32.dll$

Я попробовал следующее, но безрезультатно:

  • \t\w $: "Строка поиска '\t\w $' не найдена!». Имеет смысл, так как "\" не учитывается
  • \ Т [^\ т].+?$: Начинается со второго столбца
  • [^\ Т].+?$: Вся линия

Любая идея?

Спасибо.

2 ответа2

1

Используйте жадность подстановочных знаков: они съедят столько, сколько могут. Например, если вы хотите сопоставить всю строку, используйте: ^.*\t([^\t]+)$ . ^.*\t соответствует всему, что предшествует tab (включая ее), а группа ([^t]+)$ соответствует тому, что вы ищете (и в этом случае вы можете ссылаться на нее с $1 ).

0

Вы были недалеко: очень просто \t[^\t]+$ (или \t([^\t]+)$ если вы можете захватить группу из результата (группа, которую вы ищете, находится в скобках)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .