Извлечение первой строки без точки текста после последней обратной косой черты - PullRequest
0 голосов
/ 04 июля 2018

может кто-нибудь любезно помочь мне извлечь жирный текст "англия" из предоставленной строки ниже

\ABCD\E$\FGHI$\BAB-COM-DEP_XYZ\TAM\<b>england</b>.CLSM.IST

Я пытался \\.*?\., но потом я получаю

\ABCD\E$\FGHI$\BAB-COM-DEP_XYZ\TAM\<b>england</b>.

Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Используйте взгляд сзади для косой черты и отрицательный взгляд вперед для других слешей:

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

См. демоверсия .

Обратите внимание, что нет групп; весь матч ваша цель!

0 голосов
/ 04 июля 2018

В Powershell вы можете получить имя файла без расширения, разбить строку на . и получить первую итеру:

PS> $s = '\ABCD\E$\FGHI$\BAB-COM-DEP_XYZ\TAM\england.CLSM.IST'
PS> [System.IO.Path]::GetFileNameWithoutExtension($s).Split('.')[0]
england

Если по какой-либо причине вам нужно регулярное выражение, я предлагаю использовать

.*\\([^.]+)

и получите значение группы 1. Смотрите regex demo .

Детали

  • .*\\ - сопоставить весь текст вплоть до последнего символа \ включительно (поскольку .* является жадным подшаблоном)
  • ([^.]+) - Группа 1: один или несколько символов, отличных от .

Альтернативное регулярное выражение может выглядеть как

([^.\\]+)[^\\]*$

См. еще одну демонстрацию регулярных выражений .

Детали

  • ([^.\\]+) - Группа 1: один или несколько символов, отличных от . и \
  • [^\\]*$ - 0 или более символов, отличных от \ до конца строки ($).

Использование Powershell :

PS> $s -match '([^.\\]+)[^\\]*$' | Out-Null
PS> $matches[1]
england

Если вам нужно регулярное выражение, которое будет возвращать необходимую строку напрямую , вы можете использовать

 $s -replace '.*\\([^\\.]+)[^\\]*$', '$1'

См. Демоверсию .NET

  • .* - сопоставить любые 0+ символов как можно больше
  • \\ - \ char
  • ([^\\.]+) - Группа 1 (обозначается $1): соответствует и использует один или несколько символов, отличных от \ и .
  • [^\\]*$ - 0+ символов, отличных от \ ([^\\]*) и конец строки ($).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...