Регулярное выражение для поиска «несуществования» шаблона в конце URL - PullRequest
2 голосов
/ 05 октября 2011

Я пишу сценарий 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 ]

1 голос
/ 05 октября 2011

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

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

(вы должны сделать escape в Java.)

и добавить "!"в вашем выражении java if?

как if (! m.match ()) ...

1 голос
/ 05 октября 2011

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

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

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

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

0 голосов
/ 05 октября 2011

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

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

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

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

...