繁体   English   中英

从字符串中搜索文本并提取其他内容

[英]Search a text from a string and extract something else

我有一个弦

InsertedTextAry没有代理机构的协议-ABCD <102354这是测试<

现在的要求是查看文本是否:

没有代理机构的协议

...是否存在于上面的文本中,如果存在,则提取文本:

没有代理机构的协议-XXXX

NO AGREEMENT EXISTS FOR AGENCY -<之前的部分可以是任何长度,包括数字和/或字母。

我已经用代码搜索了

protected void testMethod(String text){
    if(Pattern.matches(APPEND_FIRST + "NO AGREEMENT EXISTS FOR AGENCY" + APPEND_LAST, text)){
        // do something
    }
}

现在,我需要一些有关如何提取模式的NO AGREEMENT EXISTS FOR AGENCY - XXXX帮助NO AGREEMENT EXISTS FOR AGENCY - XXXX (其中XXXX可以是任意长度的字母数字,后跟< )。

public static void main(String[] args) {
    final String TEST = "InsertedTextAry NO AGREEMENT EXISTS FOR AGENCY - ABCD< 102354 This is test<";
      // Create a Pattern object
    Pattern r = Pattern.compile("NO AGREEMENT EXISTS FOR AGENCY[^<]*");
    if(TEST.contains("NO AGREEMENT EXISTS FOR AGENCY"))
    {
          // Now create matcher object.
          Matcher m = r.matcher(TEST);
          if (m.find( )) {
             System.out.println("Found value: " + m.group(0) );
    }
}

输出:

Found value: NO AGREEMENT EXISTS FOR AGENCY - ABCD

尝试这个

String text = "InsertedTextAry NO AGREEMENT EXISTS FOR AGENCY - ABCD< 102354 This is test<";
String pattern1 = "NO AGREEMENT EXISTS FOR AGENCY";
String pattern2 = "<";
if (text.indexOf(pattern1) > -1){
    String value = text.substring(text.indexOf(pattern1));
    value = value.substring(0, value.indexOf(pattern2));
    System.out.println(value);
}

这项愚蠢的工作:

public static void main(String[] args) {
    String str = "InsertedTextAry NO AGREEMENT EXISTS FOR AGENCY - ABCD< 102354 This is test<";
    Pattern pattern = Pattern.compile("^.*(NO AGREEMENT EXISTS FOR AGENCY - .*)< (.*)$");
    Matcher m = pattern.matcher(str);
    if (m.find()) {
        System.out.println(m.group(1));
    }
}

此代码打印:

NO AGREEMENT EXISTS FOR AGENCY - ABCD

通过对组使用正则表达式,您可以提取所需消息的任何部分

您可以执行以下操作:

String text = "InsertedTextAry NO AGREEMENT EXISTS FOR AGENCY - ABCD< 102354 This is test<";
    String[] arr = text.split("<")";
    if (arr != null && arr.length > 0) {
         String answer = arr[0].substring(arr[0].indexOf("NO AGREEMENT EXISTS FOR AGENCY"));
    }

答案:“没有代理机构协议-ABCD”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM