Найти строку в Html и получить значение после - PullRequest
0 голосов
/ 06 февраля 2020

Я отправляю сообщение на веб-страницу, и в своем ответе я получаю большой кусок HTML, который изменит следующий запрос. С помощью groovy я хотел бы найти эту строку:

var WPQ1FormCtx = {"ListData":{"owshiddenversion":23,

Значение "23" изменится при следующем размещении на веб-странице, и мне нужно это значение.

С .contains Я найду, если строка существует.

def htmlParse = Jsoup.parse(htmlResponse)
log.info a.contains('var WPQ1FormCtx = {"ListData":{"owshiddenversion":23,') 

Но мне нужно вывести значение после owshiddenversion в строке 'var WPQ1FormCtx = {"ListData":{"owshiddenversion":xxxxx,, которое может быть любым от 1 до 100 000.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2020

Если я правильно понимаю строку, которую вы соответствуете, это поможет вам сделать это в чистом Groovy. Вы можете заключить его в метод, который называется тестом вместо .contains ()

def stringPortion = 'var WPQ1FormCtx = {"ListData":{"owshiddenversion":23,'

def match = stringPortion =~ /"owshiddenversion":(\d{1,6})/  //capture the match with ()

def matchPortion = match[0][1] //first capture in match

if (matchPortion) {
    println matchPortion
    def number = matchPortion.toInteger()
    if (number > 100000) {
        println 'number > 100000'
    }
    else if (number <= 10000) {
        println 'number <= 10000'
    }
}
1 голос
/ 06 февраля 2020

(надеюсь, я не буду привлекать слишком много отрицательных голосов ...)

Я никогда не использовал Java, но играя здесь здесь Я мог бы привести пример, который использует регулярное выражение:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloWorld{
     public static void main(String []args){
        String str = new String("before the number 234123");
        Pattern pattern = Pattern.compile("before the number (\\d{1,6})");
        Matcher matcher = pattern.matcher(str);
        matcher.matches();
        System.out.println(matcher.group(1));
     }
}

Если у вас действительно есть это число, которое меньше или равно 100000, то вы должны написать немного более сложное регулярное выражение, которое должно сказать «либо 100000, либо 5 di * 1010». * число ".

...