Регулярное выражение для поиска "несуществования" шаблона в конце URL

Я пишу сценарий Rational Functional Testing (RFT) с использованием языка Java, в котором я пытаюсь создать объект в моей карте объектов с помощью регулярного выражения, не соответствующего определенному шаблону.

URL, который я не хочу совпадать, будет выглядеть примерно так:

http://AnyHostName/index.jsp?safe=active&q=arab&ie=UTF-8&oe=UTF-8&start=10
http://AnyHostName/index.jsp?safe=active&q=arab&ie=UTF-8&oe=UTF-8&start=40
http://AnyHostName/index.jsp?safe=active&q=arab&ie=UTF-8&oe=UTF-8&start=210

Я попытался использовать приведенное ниже выражение, но, поскольку в конце URL-адреса также содержится любое число из двух или более цифр, выражение не смогло удовлетворить потребность:

^.*(?<!\start=10)$   or   ^.*(?<!\start=40)$   or   ^.*(?<!\start=110)$

Если я попытался использовать \ d + для замены числа в приведенных выше шаблонах, выражение перестало работать правильно.

Примечание: стоит упомянуть, что использование любого Java-кода будет невозможно, поскольку регулярное выражение будет передано инструменту (т. Е. RFT), и оно будет использоваться для сопоставления внутри.

Любая помощь, пожалуйста, по этому вопросу?

3 ответа

Решение

Используйте это выражение:

^(?:(?!start=\d+).)*$

Преимущество состоит в том, что оно исключает также случаи, когда start=10 появляется в середине URL (т.е. http://AnyHostName/index.jsp?safe=active&q=arab&start=210&ie=UTF-8&oe=UTF-8).

Тем не менее, это может быть медленным, так как он проверяет негативное прогнозирование для каждого символа.

Почему бы просто не соответствовать

^http://AnyHostName/index.jsp?safe=active&q=arab&ie=UTF-8&oe=UTF-8&start=\d+$

(Вы должны сделать побег в Java.)

и добавьте "!" в вашем заявлении, если ява?

как если бы (!m.match())...

Согласно регулярно-expressions.info взгляд в Java должен быть конечной длины. Так \d+ будет бесконечным.

Я не уверен, но вы можете попробовать

^.*(?<!\start=\d{1,20})$

этот квантификатор {1,20} будет позволять любое количество цифр от 1 до 20 и должно соответствовать конечным критериям.

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