Regex: сохранить последнее слово после текста - PullRequest
0 голосов
/ 14 мая 2018

Tommy Hilfiger Men Teal Blue Аналоговые часы TH1791293_BBD

Мне нужно разделить это и сохранить последнюю часть, т.е.

TH1791293_BBD

Проблема в том, что часть перед целевой строкой, т.е.

Tommy Hilfiger Men Teal Blue Аналоговые часы

Может быть различной длины.

Резюме: мне нужно разделить текст, используя пробелы и сохранить последнюю часть массива.Дополнительное ограничение: мне нужно сделать это в одной строке, не имея возможности сохранить объект в переменной (что-то вроде этого):

a = $ e.split ("");output = a [a.length () - 1]

Любое решение этой проблемы приветствуется.Я только начал использовать Parsehub для анализа данных.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

С инструментом Extract вы можете использовать

(\S+)$

Здесь

  • (\S+) - сопоставляет и фиксирует в группе 1 один или несколько символов, отличных от пробела
  • $ - в конце строки.

Обратите внимание, что вы должны использовать группу захвата, см. Справочный центр ParseHub ссылка :

Вы должны использовать захваты "()" для любого текста, который вы хотите включить в свои результаты. При желании вы можете включить «извлечь все вхождения». Это заставит команду извлечения вернуть список совпадений.

0 голосов
/ 14 мая 2018

Если вам просто нужна последняя часть строки в качестве выходных данных, разделение даже не требуется, вы можете добиться этого с помощью следующего и заменить на $1 (1-я подходящая группа)

^.*?(?<=\s)([^\s]+)$

Демо

Регулярное выражение на самом деле ищет все, что не имеет пробела после последнего пробела строки (это делается путем проверки, находится ли слово перед концом строки и с использованием положительного взгляда на пробел символы)

В Java: string.replaceAll("^.*?(?<=\\s)([^\\s]+)$", "$1");

...