2015-01-08 2 views
-1

Фактический ответ HTML содержит большие данные, среди которых следующий фрагмент линии приходит междуЧто такое регулярное выражение для извлечения 123 + 43 из строки «Что такое (123 + 43)?» в экстракторе регулярных выражений JMeter?

<span style="width:50%"><font color="#000000">What is (123+43)?</font></span> 

Числа внутри скобок изменяются каждый раз, а также арифметический операнда. Итак, как я могу получить целую строку в фигурных скобках с помощью экстрактора регулярных выражений в JMeter?

Я использовал Что есть/(([^)] +))/но я ничего не получаю.

Также я хотел бы знать, как выполнить арифметическую операцию в JMeter после извлечения строки и присвоить ее переменной. Я попытался использовать препроцессор JSR233, но я не знаю, как отправить результат на следующий запрос Http.

PS: «Что (123 + 43)» Ближайший я мог бы достичь для извлечения выражения из является What is (.+?\)) Но это дает выход как (123 + 43). Я хочу также удалить фигурные скобки. То есть я был поражен.

место я добавил регулярное выражение

http://i.imgur.com/UkQD80O.png

+1

Что JavaScript должен делать с Java? – epascarello

+0

Я использовал язык Javascript в JSR233. Я думал об использовании engine.eval (given_Input_String_Arithmetic_Expression). –

+0

Вам нужно использовать регулярное выражение?Почему бы не использовать indexOf ("(") и lastIndexOf (")"), чтобы получить положение скобок, а затем извлечь то, что находится между ними с помощью substring()? – samgak

ответ

0

Регулярное выражение, которое вы хотите,

(?<=What is \()[-+\d]+(?=\)\?) 

Не забудьте избежать обратных косых черт, что-то вроде "(?<=What is \\()[-+\\d]+(?=\\)\\?)", если вы используете его как Java String буквальный или аналогичный.

Это использует положительный, между просмотром назад (?<= и ), а затем часть, которую вы хотите, чтобы соответствовать, после чего положительный предпросмотр, между (?= и ). Для части, которую вы хотите сопоставить, я предположил, что любая строка цифр, плюсов и минусов в порядке.

0

Попробуйте это:

What is \((.+?)\)\? 

Надежда помогает.

+0

Используйте онлайн-инструмент, например: https://www.regex101.com/, http://www.regexr.com/ и т. Д. – bestmike007

+0

Работает как шарм. Не могли бы вы ответить на другую часть, например, как решить строку в JMeter? Спасибо –

+0

Я думал, что вы хотите совместить часть в круглых скобках, а не все предложение? –

1

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

What is \((\d+)(.)(\d+)\)\? 

значение шаблона в JMeter Regex экстрактор будет $1$$2$$3$

Если экстрактор исх имя является вал, то

val_g1 will be 123 
val_g2 will be + 
val_g3 will be 43 

Для добавления 2-Nos. вы можете использовать препроцессор beanshell в JMeter. Предоставить извлеченные значения вместе с оператором процессору beanshell и выполнить на нем арифметические операции и передать переменную результата в следующий запрос.

примеры здесь, JMeter Advance features.

+0

Но оператор арифметики меняется случайным образом. Некоторое время это будет добавление, некоторое время это будет вычитание. –

+0

Препроцессор Beanshell - это простой код Java. все арифметические операции могут быть выполнены с его помощью. Но если вы говорите, что оператор может меняться, вам тоже нужен оператор. см. обновленное регулярное выражение и ответ. –

+0

Указанная ссылка ничего не говорит об арифметических операциях. –

Смежные вопросы