正则表达式中^和$的含义与实例代码

目录
  • 先说明一下两个表达式含义:
  • 我们在来看下,非开头和结尾的情况
  • 附:在正则表达式中^ 和 $ 同时出现的含义
  • 总结

前前一期说了正则表达式校验金额最多保留两位小数(感兴趣的小伙伴可以过去看看)

其中提到了^和$,当时只是简单说明了这个表达式,今天来详细说明一下使用方法

先说明一下两个表达式含义:

  • ^匹配开始位置
  • $匹配结束位置

来看个简单的demo

import java.util.regex.Pattern;

/**
 * @author yanghao
 * @version PatternTest.java, v 0.1 2019-03-30 09:41
 */
public class PatternTest {

    /**
     * 待匹配字符串
     */
    private static final String tempStr = "A.B.C.D";

    /**
     * 匹配开始位置表达式
     */
    private static final Pattern PATTERN_START = Pattern.compile("^A");

    /**
     * 匹配结束位置表达式
     */
    private static final Pattern PATTERN_END = Pattern.compile("D$");

    public static void main(String[] args){
        System.out.println("PATTERN_START === " + PATTERN_START.matcher(tempStr).replaceAll("demo"));
        System.out.println("PATTERN_END === " + PATTERN_END.matcher(tempStr).replaceAll("demo"));
    }
}

运行结果如下:

PATTERN_START === demo.B.C.D
PATTERN_END === A.B.C.demo

从运行结果可以看出,待匹配字符串的开始和结尾已经被替换掉了

我们在来看下,非开头和结尾的情况

编写demo如下:

import java.util.regex.Pattern;

/**
 * @author yanghao
 * @version PatternTest.java, v 0.1 2019-03-30 09:41
 */
public class PatternTest {

    /**
     * 待匹配字符串
     */
    private static final String tempStr = "A.B.C.D";

    /**
     * 开始+中间字符串表达式
     */
    private static final Pattern PATTERN_START_MIDDLE = Pattern.compile("^B");

    /**
     * 中间字符串表达式
     */
    private static final Pattern PATTERN_MIDDLE = Pattern.compile("B");

    public static void main(String[] args){
        System.out.println("PATTERN_START_MIDDLE === " + PATTERN_START_MIDDLE.matcher(tempStr).replaceAll("demo"));
        System.out.println("PATTERN_MIDDLE === " + PATTERN_MIDDLE.matcher(tempStr).replaceAll("demo"));
    }
}

运行结果如下:

PATTERN_START_MIDDLE === A.B.C.D
PATTERN_MIDDLE === A.demo.C.D

此测试结果可以看出,如果加了^表达式,表示一定要以此为开始才能匹配到,那么同理,$表达式一定要以此为结尾才能匹配到,小伙伴们可以自己去写个demo测试一下?

附:在正则表达式中^ 和 $ 同时出现的含义

当 ^ 和 $ 同时出现时,表示只能匹配 ^ 和 $ 之间的内容,例:

/^abc$/  只能匹配'abc'

容易被理解为abcabc这种形式的也是可以的,但其实不行。

准确来说这么理解:

必须以a开头,必须以c结束,a和c的中间只写了b,所以只能匹配’abc’。

‘abcabc’的开头a和结尾c中间是’bcab’,与’b’没有任何关联,所以不对。

/^a.c$/  可以匹配a加任意单个字符加c,比如abc,aec,acc,a2c等

总结

到此这篇关于正则表达式中^和$的含义与实例的文章就介绍到这了,更多相关正则表达式^和$内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

    验证邮箱的正则表达式 var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 或者 \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* \w任意大小写英文字母 0-9数字 下划线 +为至少出现1个以上字符 [-+.]\w+ 任意包含 - + . 及 \w字符的组合出现0次或多次,主要包括例如jb51.net@vip.163.com这样的邮箱中的jb51.net

  • 正则表达式中^和$的含义与实例代码

    目录 先说明一下两个表达式含义: 我们在来看下,非开头和结尾的情况 附:在正则表达式中^ 和 $ 同时出现的含义 总结 前前一期说了正则表达式校验金额最多保留两位小数(感兴趣的小伙伴可以过去看看) 其中提到了^和$,当时只是简单说明了这个表达式,今天来详细说明一下使用方法 先说明一下两个表达式含义: ^匹配开始位置 $匹配结束位置 来看个简单的demo import java.util.regex.Pattern; /** * @author yanghao * @version Pattern

  • 列举java语言中反射的常用方法及实例代码

    Java反射机制 一.什么是反射机制  简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,     那么就可以通过反射机制来获得类的所有信息. 二.哪里用到反射机制  有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码,     Class.forName("com.mysql.jdbc.Driver.class").newInstance();但是那时候只知道那行代码是生成     驱动对象实例,并不知道

  • Linux 中的 Openssl命令及实例代码

    openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖于openssl命令才能执行,所以称为伪命令(pseudo-command),每个伪命令都有各自的功能,大部分command都可以直接man command查看命令的用法和功能. OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.在Ope

  • 使用jQuery实现两个div中按钮互换位置的实例代码

    效果如下 代码如下: <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src="js/jquery-2.1.0.js"></script> <script type="text/javascript"> $(function() { /

  • vue Render中slots的使用的实例代码

    本文介绍了vue Render中slots的使用的实例代码,有需要了解vue Render中slots用法的朋友可参考.希望此文章对各位有所帮助. render 中 slot 的一般默认使用方式如下: this.$slots.default 对用 template的<slot>的使用没有name . 想使用多个slot 的话.需要对slot命名唯一.使用this.$slots.name 在render中添加多个slot. <body> <div class="&qu

  • C语言中数据结构之链表归并排序实例代码

    C语言中数据结构之链表归并排序实例代码 问题 设有两个无头结点的单链表,头指针分别为ha,hb,链中有数据域data,链域next,两链表的数据都按递增排序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中ha表中已有的数据若hb中也有,则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏. 源程序 #include <stdio.h> #include<stdlib.h> #define N1 6 /*链表La的长度*/ #define N2 6 /*链表Lb的

  • iOS中 LGLAlertView 提示框的实例代码

    使用与iOS8 以后,只是把系统的UIAlertController进行了封装,省的每次用的时候要写很多的代码.封装后只需要一句代码即可 , deome 地址 :https://github.com/liguoliangiOS/LGLAlertView.git 上代码LGLAlertView.h: #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger, LGLAlert

  • JS 中使用Promise 实现红绿灯实例代码(demo)

    要求 使用promise 实现红绿灯颜色的跳转 绿灯执行三秒后 黄灯执行四秒后 红灯执行五秒 html 实现如下: <ul id="traffic" class=""> <li id="green"></li> <li id="yellow"></li> <li id="red"></li> </ul> 定义一个

  • JS中定位 position 的使用实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所述: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> img{width:200px;} </style> </head> <body> <div id=&q

  • Java中自定义异常详解及实例代码

    Java中自定义异常详解及实例代码 下面做了归纳总结,欢迎批评指正 自定义异常 class ChushulingException extends Exception { public ChushulingException(String msg) { super(msg); } } class ChushufuException extends Exception { public ChushufuException(String msg) { super(msg); } } 自定义异常 En

随机推荐