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

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

C: \ Development.TFS \ Examn \ R4 Гиса \ Web \ OrganisationManager \ темы \ голубой \ CSS

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

Ответы [ 5 ]

6 голосов
/ 27 января 2010
(\w+)\W+\w+$

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

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

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

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

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

1 голос
/ 27 января 2010

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

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

0 голосов
/ 27 января 2010

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

(\w+)\\\w+$
0 голосов
/ 27 января 2010

if (eregi ('themes \\ ([a-z]. +) \\ css', $ subject)) { # Успешное совпадение } еще { # Попытка совпадения не удалась }

Пример PHP для получения слова blue.

0 голосов
/ 27 января 2010

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

...