#regex
#регулярное выражение
Вопрос:
Я хотел бы выбрать все строки (части URL-адресов) с «/ en» в начале, затем случайную строку в середине и в конце «aspx», например «/ru/about-us-or /any-other-string-12345/page.aspx»
Вот мой текущий подход.
^/en.*aspx$
-
^/en
— в начале «/en» -
.*
— затем случайная строка в середине -
aspx$
— и aspx в конце
Интересно, почему это не работает. Есть идея?
Комментарии:
1. Определите «не работает». Что вы получаете? И какое программное обеспечение запускает это регулярное выражение?
2. Согласно моим источникам ( regexhero.net/tester ) это работает. Проблема может быть в другом месте вашего кода.
Ответ №1:
Я предполагаю, что ваши входные строки представляют собой полные URI (например, так: «http://www.example.com/en/about-us-or/any-other-string-12345/page.aspx «).
Если это так, ваше регулярное выражение завершится ошибкой, потому что флаг ^ соответствует началу строки, которая в данном случае находится прямо перед h в http.
Символ $ также приведет к сбою регулярного выражения в URI, которые выглядят следующим образом «http://www.example.com/en/about-us-or/any-other-string-12345/page.aspx?parameter=value «.
Редактировать: Чтобы действительно ответить на ваш вопрос — попробуйте удалить ^ и $ из вашего регулярного выражения: /en.*aspx
Ответ №2:
символ / имеет особое значение в регулярном выражении — поэтому вам придется экранировать его (/) также сгруппируйте звездочку (.*) :
^/en(.*)aspx$
Комментарии:
1. Вышеуказанное работает с движками регулярных выражений Java и JavaScript. какой язык / движок вы используете?
Ответ №3:
Я предполагаю, что вы используете это как часть .htaccess
правила перезаписи. URL-путь, представленный в RewriteRule, зависит от каждого каталога и никогда не будет иметь инициала /
(он удален). Попробуйте удалить инициал /
из вашего шаблона следующим образом:
^en/(.*).aspx$