正则+split 解决国航项目获取字符串匹配问题

需求:

有如下字符串信息:

-------SAVEANDSUBMIT页面TAIDsHID的值为:

00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;
5046860;
WF-D5DA47DD-1685-4EA0-9DDB-A5572A76CCE3;
4178072;

//目前提交值
00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;
5046860;
WF-70CA1C7E-F4CC-4280-94C9-21F79C456428;
4178081;

00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;
5046860;
WF-28883882-9EBC-4CB8-B166-AF50800E1B98;
4178060;

大致是这样的:

00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;5046860;WF-D5DA47DD-1685-4EA0-9DDB-A5572A76CCE3;4178072;00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;5046860;WF-70CA1C7E-F4CC-4280-94C9-21F79C456428;4178081;00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;5046860;WF-28883882-9EBC-4CB8-B166-AF50800E1B98;4178060;

我需要通过每段第三行的数获取第四行的activityID

我是这么解决的:

package com.airchina.client.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestString {
    public static void main(String[] args) {
    	String s="00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;5046860;WF-D5DA47DD-1685-4EA0-9DDB-A5572A76CCE3;4178072;00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;5046860;WF-70CA1C7E-F4CC-4280-94C9-21F79C456428;4178081;00-NE8KF4P2-RC2Q-K4AM-AE78-PSUX1318YXP8;5046860;WF-28883882-9EBC-4CB8-B166-AF50800E1B98;4178060;";
    	String t="WF-70CA1C7E-F4CC-4280-94C9-21F79C456428;";
    	String a="";
    	Pattern pattern = Pattern.compile(t+"\\d+;",Pattern.CASE_INSENSITIVE);
    	Matcher m = pattern.matcher(s);
    	if(m.find()) {
    		System.out.println(m.group(0));
    		a=m.group(0);

    	}
    	String[] sPlit=a.split(";");
        a=sPlit[1];
        System.out.println(a);

 		}
}

输出:

WF-28883882-9EBC-4CB8-B166-AF50800E1B98;4178060;
4178060

时间: 2024-09-09 11:23:22

正则+split 解决国航项目获取字符串匹配问题的相关文章

使用C语言解决字符串匹配问题的方法_C 语言

最常想到的方法是使用KMP字符串匹配算法: #include <stdio.h> #include <stdlib.h> #include <string.h> int get_nextval(char *pattern, int next[]) { //get the next value of the pattern int i = 0, j = -1; next[0] = -1; int patlen = strlen(pattern); while ( i &l

Java实现字符串匹配(基于正则)_java

有一个String,如何查询其中是否有y和f字符?最黑暗的办法就是: 程序1:我知道if.for语句和charAt() class Test{ public static void main(String args[]) { String str="For my money, the important thing "+"about the meeting was bridge-building"; char x='y'; char y='f'; boolean r

C++中用栈来判断括号字符串匹配问题的实现方法_C 语言

本文实例主要实现:输入一个括号字符串,依次检验,若为左括号则入栈,若为右括号则出栈一个字符判断是否与之相对应,在最后还需判断栈是否为空,如果不为空则不匹配. 首先回顾栈的基本知识: 1.定义栈的结构体并初始化一个新栈: struct stack { char strstack[stacksize]; int top; }; void InitStack(stack &s) { s.top=-1; } 2.出栈和入栈操作: char Push(stack &s,char a) { if(s.

UVa 409 Excuses, Excuses! (字符串匹配)

409 - Excuses, Excuses! Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=96&page=show_problem&problem=350 Judge Ito is having a problem with people subpoenaed for jury duty giving rath

模糊字符串匹配:双重解密算法

名称匹配的一个大问题是错误的倾向.有许多不同的方式,人们拼写相同的名字,打字错误,误读了另一个人说的话.有许多方法可以免费形式的语言数据被破坏.当您需要搜索/匹配不良数据时,会导致许多头疼. 有很多不同的方法来解决它.像Levenshtein算法一样,它计算出使一个字符串匹配另一个字符串需要进行多少次编辑.或者检查字符串组成的较小序列的NGram算法,并将它们与一个同义词串的序列进行比较.然后有语音算法根据"声音"如何编码字符串.就像SoundEx或Double Metaphone算法

strlen-ACM简单的字符串匹配,但老是OJ通不过,求大神指点

问题描述 ACM简单的字符串匹配,但老是OJ通不过,求大神指点 Description 给出两个字符串S和T,请判断T是否为S的子串.本题请用"简单匹配法"来做. 使用strstr函数,判cheat Input 第一行是一个整数N,说明有多少个测试用例. 接下来是N个测试用例,每个测试用例占2行:第一行是字符串S,第二行是字符串T,字符串中不含空格. 1 ≤ strlen(S) , strlen( T ) ≤ 10000 Output 对每个测试用例,输出一行结果:是否子串,是则输出&

java实现字符串匹配求两个字符串的最大公共子串_java

本文实例讲述了java实现求两个字符串最大公共子串的方法.分享给大家供大家参考,具体如下: 最近在项目工作中有一个关于文本对比的需求,经过这段时间的学习,总结了这篇博客内容:求两个字符串的最大公共子串. 算法思想:基于图计算两字符串的公共子串.具体算法思想参照下图: 输入字符串S1:achmacmh    输入字符串S2:macham 第a步,是将字符串s1,s2分别按字节拆分,构成一个二维数组: 二维数组中的值如b所示,比如第一行第一列的值表示字符串s2和s1的第一个字节是否相等,若相等就是1

C语言实现字符串匹配KMP算法_C 语言

字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 下面的的KMP算法的解释步骤 1. 首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较.因为B与A不匹配,所以搜索词后移一位. 2. 因为B与A不匹配,搜索词再往后移. 3. 就这样,直到字符

c-文件中字符串匹配问题

问题描述 文件中字符串匹配问题 判断文件中是否存在某一字符串,若存在则退出,若不存在则添加???求用c编写的代码,,,各位大虾帮帮忙,万分感谢!!!!! 解决方案 先读出文件的内容,然后通过 strstr 等类似的功能函数完成字符串是否存在的判断 解决方案二: 参考一下这个 C语言程序,在文件中查找指定字符串出现的次数http://wenda.haosou.com/q/1382138287067435