Питання Як зробити повторення регулярних виразів лише у точних відповідності?


Гаразд, так, в принципі, я маю трохи коду, що відповідає URL-адресам за допомогою регулярних виразів. Потім буде викликати деяку функцію, засновану на якій регулярному висвітленні відповідає URL-адреса. Я ніколи не хочу, щоб для більш ніж однієї функції було викликано URL-адресу, і я хочу, щоб збіги з регулярним вираженням мали бути "точними"

Наприклад, з простою URL-адресою / Я використовую простий регулярний вираз / який буде відповідати / але це також буде відповідати таким речам /foo і /foo/bar.

Як уникнути цієї часткової поведінки відповідності в C # / .Net?


13
2018-01-03 00:59


походження


Ви намагалися скористатися маршрутизацією URL-адреси замість розгортання власного диспетчера маршрутів? - Jacob Krall
@ JacobKrall смішно ви повинні згадати про це. Я продовжував застосовувати свій власний маршрутизатор URL-адреси (набагато більш автономно, ніж .Net), як місяць після цього запитання: P - Earlz


Відповіді:


Використовуйте ^ для відповідності початку рядка і $ для кінця рядка.

Наприклад: ^/$ матчі / але ні /foo. І ^/ матчі /foo але ні foo/.


26
2018-01-03 01:02



Хмм Мені довелось змінювати кілька регулярних виразів, щоб працювати з цим, але це, здається, є відповіддю. Я не був впевнений, що це можна зробити, лише злегка змінюючи регулярні вирази - Earlz


Додайте простір на початку та в кінці ключового слова, з яким ви хочете збігатися. Наприклад, у вас є рядок "Hey! foobar I am foo bar." Тепер давайте скажемо, що ви хочете відповідати foo. Ви можете це зробити /\s+foo\s+/i це поверне матч лише для foo, а не для foobar.


-2
2017-11-07 08:59



Це не спрацьовує, якщо слово є першим рядком або останнім у реченні або рядку. - Mat