正则表达式匹配字符串

(?=a)  以a开始匹配

(.*?)  匹配对应的字符串

.*?中间连接,匹配任意字符到结束

(?= b)  以b结尾

例如

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

/**
 **  (?<=<span>编号:) 以<span>编号: 开始
 **  (.*?)需要的匹配值  11
 **  .*? 匹配任意字符到下一个符合条件的字符 --中间连接
 **  (?=</span>)  以</span>结尾
 *
 */
public class Test {

//    private static final Pattern pattern=Pattern.compile("(?<=<span>编号:)(.*?)(?=</span>)");
    //private static final Pattern pattern=Pattern.compile("(?<=<span>编号:)(.*?)(?=</span>).*?(?<=name=\"time\" value=\")(.*?)(?=\")");
    //private static final Pattern pattern=Pattern.compile("(?<=<span>编号:)(.*?)(?=</span>).*?(?<=name=\"time\" value=\")(.*?)(?=\").*?(?<=<marquee  title=\")(.*?)(?=\")");
    private static final Pattern pattern=Pattern.compile("(?<=<span>编号:)(.*?)(?=</span>).*?(?<=name=\"time\" value=\")(.*?)(?=\").*?(?<=<marquee title=\")(.*?)(?=\").*?(?<=scrollamount=\"10\">)(.*?)(?=</marquee>)");

    public static void main(String[] args) {
        List<String[]> result = new ArrayList<>();
        String b = "<span>编号:11</span>"
                + "<input type=\"text\" class=\"\" name=\"time\" value=\"2022-06-25 14:52:11\" /> "
                + "<marquee title=\"江苏省南京市建邺区吴侯街\" height=\"30\" align=\"left\" behavior=\"scroll\" direction=\"left\" scrolldelay=\"300\" scrollamount=\"10\">"
                + "118.698269,31.970634</marquee> ";
        Matcher matcher = pattern.matcher(b);
        while (matcher.find()) {
            String[] row = new String[5];
            // 编号
            row[0] = matcher.group(1).trim();
            // 时间
            row[1] = matcher.group(2).trim();
            // 地点
            row[2] = matcher.group(3).trim();
            // 经纬度
            String[] geo = matcher.group(4).trim().split(",", 2);
            if (geo.length == 2) {
                row[3] = geo[0].trim();
                row[4] = geo[1].trim();
            }
            result.add(row);
        }
        result.forEach(e -> System.out.println(Arrays.toString(e)));
    }
}

输出


备注

\\d  数字

\\D  非数字

+  表示多次并连续满足

例 

Pattern pattern=Pattern.compile("\\d+\\D+")

字符串  01a022b0333cc

输出

01a

022b

0333cc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值