網站首頁 編程語言 正文
前前一期說了正則表達式校驗金額最多保留兩位小數(感興趣的小伙伴可以過去看看)
其中提到了^和$,當時只是簡單說明了這個表達式,今天來詳細說明一下使用方法
先說明一下兩個表達式含義:
- ^匹配開始位置
- $匹配結束位置
來看個簡單的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等
總結
原文鏈接:https://blog.csdn.net/weixin_43968234/article/details/88910204
相關推薦
- 2022-11-26 R語言學習筆記之plot函數_R語言
- 2022-08-31 C++淺析構造函數的特性_C 語言
- 2023-07-08 echarts多個series進行自定義tooltip的數據顯示
- 2022-02-04 sql語句:and與or的優先級
- 2022-04-05 ORA-01779: 無法修改與非鍵值保存表對應的列
- 2023-07-28 ElementUI el-tabs切換之前判斷是否滿足切換條件 不滿足條件僅提示不切換Tab
- 2022-05-25 Springboot使用Redis-Cell實現限流
- 2022-08-31 在.Net?Framework應用中請求HTTP2站點的問題解析_實用技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支