Как получить предыдущее слово с регулярным выражением?

У меня есть такой путь:

C: \ Development.TFS \ Examn \ R4-ветвь \Web\OrganisationManager\ Themes \ голубой \ CSS

И мне нужно регулярное выражение, чтобы вывести слово "синий" оттуда. Я пытался, но пока не нашел решения. Он практически получает слово перед последним словом из этой строки. Пожалуйста, помогите, спасибо

5 ответов

Решение
(\w+)\W+\w+$

совпадает со вторым по последнему слову, фиксирует его в обратной ссылке нет. 1, затем соответствует одному или нескольким несловарным символам, затем последнему слову и затем EOL.

Если вы на самом деле не хотите, чтобы фактические слова, но элементы пути соответствовали (даже если они содержат несловарные символы), тогда

([^\\:]+)\\[^\\]+$

может сделать лучшую работу.

Редактировать: Добавлено : в группу "от второго до последнего слова", чтобы регулярное выражение могло обрабатывать и относительные пути.

Вы не можете просто разделить строку, используя символ '\', а затем получить splitResult[splitResult.Count-1]?

вы всегда можете заменить '\' на разделитель пути в вашей среде, чтобы получить более согласованные результаты

Другой вариант:

(\w+)\\\w+$

Вы должны найти этот шаблон в строке: ([\w\s.-]+)\\[\w\s.-]+$, Первая группа будет содержать слово "синий" в вашем случае. Точный синтаксис регулярных выражений и доступа к группам зависит от вашего языка программирования.

if (eregi('themes\\([az].+)\\css', $subject)) { # Успешное сопоставление} else { # Неудачная попытка сопоставления}

Пример PHP, чтобы получить слово синий.

Другие вопросы по тегам