【问题标题】:Find a string in Html and get value after在 Html 中查找一个字符串并在之后获取值
【发布时间】:2020-05-22 16:24:42
【问题描述】:

我正在发布到一个网页,在我的回复中我得到了一大块 HTML,这些 HTML 将改变下一个请求。 使用 groovy 我想找到这个字符串:

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

值“23”将在我下次发布到网页时发生变化,我需要该值。

使用.contains,我会查找字符串是否存在。

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

但是我需要在字符串'var WPQ1FormCtx = {"ListData":{"owshiddenversion":xxxxx,中写出owshiddenversion之后的值 可以是 1 到 100 000 之间的任何值。

【问题讨论】:

  • \d{1,6} 应该匹配多于一位且最多 6 位。这意味着它也可以匹配大于 100000 的数字,只要它们的长度不超过 6 位。
  • 嗨,你能在我的例子中展示一下吗?

标签: java html regex groovy soapui


【解决方案1】:

(我希望我不会吸引太多的反对票...)

我从未使用过 Java,但在 here 附近玩过,我可以想出一个使用正则表达式的示例:

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 位数字”。

【讨论】:

    【解决方案2】:

    如果我理解您正确匹配的字符串,这将帮助您在纯 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'
        }
    }
    

    【讨论】:

      【解决方案3】:

      下面的代码块可以工作

      def json = WPQ1FormCtx 
      def parsedJson = new groovy.json.JsonSlurper().parseText(json)
      def owshiddenversion= parsedJson.findIndexOf { it.key == 'owshiddenversion' }
      

      【讨论】:

        猜你喜欢
        • 2016-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多