正则表达式匹配字符串

(?=a)  以a开始匹配

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

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

(?= b)  以b结尾

 

例如


package test;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * <p>一句话概要描述目的</p><br> * <p>详细描述如何工作以及注意事项</p><br> * 创建时间: 2023/3/31 10:21 * * @author yk * @version 1.0 * @since 1.8 */public class Test2 {//    private static final Pattern pattern=Pattern.compile("(?<=a).*?bbb");//    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>)");    /**     *   (?<=<span>编号:)      以<span>编号: 开始     *   (.*?)需要的匹配值   11     *    .*? 匹配任意字符到下一个符合条件的字符  --中间连接     *   (?=</span>)     以</span>结尾     * @param args     */    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();            //经纬度分割            String[] geo=matcher.group(4).trim().split(",",2);            if(geo.length==2){                row[2]=geo[0].trim();                row[3]=geo[1].trim();            }            //地点            row[4]=matcher.group(3).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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值