1. 程式人生 > >深入java 定義正則表示式

深入java 定義正則表示式

本文分為3大部分

  • 正則表示式的通用定義規則
  • 正則表示式定義的例子
  • 附加常用的匹配例子

正則表示式的通用定義規則

使用正則表示式我們只要關心一個類即可:java.util.regex.Pattern
摘抄自官方API文件。
指定為字串的正則表示式必須首先被編譯為此類的例項。然後,可將得到的模式用於建立 Matcher 物件,依照正則表示式,該物件可以與任意字元序列匹配。執行匹配所涉及的所有狀態都駐留在匹配器中,所以多個匹配器可以共享同一模式。

因此,典型的呼叫順序是

Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();

在僅使用一次正則表示式時,可以方便地通過此類定義 matches 方法。此方法編譯表示式並在單個呼叫中將輸入序列與其匹配。
語句 boolean b = Pattern.matches(“a*b”, “aaaaab”);
等效於上面的三個語句,儘管對於重複的匹配而言它效率不高,因為它不允許重用已編譯的模式。
此類的例項是不可變的,可供多個併發執行緒安全使用。Matcher 類的例項用於此目的則不安全。
匹配器和分組上一篇文章已經詳細的說明了,這篇文章就不繼續介紹,直接介紹規則和例子。

正則表示式主要用於模式匹配,查看了String類的原始碼,其實String類裡面很多類似字串分割和匹配的函式內部都是直接呼叫了Pattern類的方法。類似split方法等:
這裡寫圖片描述


這裡寫圖片描述
這裡寫圖片描述

正則表示式的一些語法規則直接去看api文件就好。

正則表示式定義的例子

這個部分介紹幾個正則表示式的例子,一篇文章總結了:同一個正則表示式匹配的內容可能是很不一樣的,但是他們都滿足了某一項規則,這個規則就是我們所說的正則表示式所表示的內容。

下面舉一個例子說明:
這裡寫圖片描述

其中:[A-Z][a-z]([A-Z][a-z])+ 具體的意思是:大寫字母-小寫字母(0個或多個){大寫字母-小寫字母(0個或多個)}(至少一次)
意思就是:至少兩次:大寫-(小寫*)
還有一點關鍵點是:正則表示式在解析的時候從左往右,* +?從左往右只與自己最近的一塊作用。

附加常用的匹配例子

附 : 常用的正則表示式:
匹配特定數字:
^[1-9]d*//[19]d   //匹配負整數
^-?[1-9]d*//[19]d|0  //匹配非負整數(正整數 + 0)
^-[1-9]d*|0//+0[19]d.d|0.d[19]d   //匹配正浮點數
^-([1-9]d*.d*|0.d*[1-9]d*)//?([19]d.d|0.d[19]d|0?.0+|0)  //匹配浮點數
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0//+0(([19]d.d|0.d[19]d))|0?.0+|0  //匹配非正浮點數(負浮點數 + 0)
評註:處理大量資料時有用,具體應用時注意修正

匹配特定字串:
^[A-Za-z]+//26[AZ]+  //匹配由26個英文字母的大寫組成的字串
^[a-z]+//26[AZaz09]+  //匹配由數字和26個英文字母組成的字串
^w+$  //匹配由數字、26個英文字母或者下劃線組成的字串

在使用RegularExpressionValidator驗證控制元件時的驗證功能及其驗證表示式介紹如下:

只能輸入數字:“^[0-9]*ndn
只能輸入至少n位數字:“^d{n,}mndm,n
只能輸入零和非零開頭的數字:“^(0|[1-9][0-9]*)[09]+(.[09]2)?
只能輸入有1-3位小數的正實數:“^[0-9]+(.[0-9]{1,3})?+?[1

相關推薦

深入java 定義表示式

本文分為3大部分 正則表示式的通用定義規則 正則表示式定義的例子 附加常用的匹配例子 正則表示式的通用定義規則 使用正則表示式我們只要關心一個類即可:java.util.regex.Pattern 摘抄自官方API文件。 指定為字串的正則表示式

深入java 使用表達式

使用 ndt lan get gin zf2 表達 www. http 0P廊6諭2胸0f6lb匣繼http://shufang.docin.com/sina_6272961162 d坪乘62杏vl擄諏hhttp://shequ.docin.com/dyv886 職45b8

java基礎---表示式

package cn.itcast.regex; /* 正則表示式:正則表示式其實就是用於操作字串的一個規則,正則表示式的規則使用了特殊符號來表示的 需求:校驗一個QQ號。    1.不能以0開頭。    2.長度5~11

java表示式判斷一個字串是否是車牌號

public boolean checkCarNumber(String content) { String pattern = "([京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊]{1}(([A-HJ-Z]{1}[A-HJ-NP-Z0-9]{5})|([A-HJ-

Java表示式判斷輸入的電話號碼格式是否正確

import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; /** *三大運營商號碼均可驗證(不含衛星通訊1349) */ p

java使用表示式從一長串字元中獲取一段特徵字串

只能說String工具類太強大,導致一直以來,幾乎沒怎麼用到過正則表示式,現在突然要用到,參考正則表示式語法,摸索一上午才搞出來。記錄分享一下,以免忘記 從一長串字元中,截取出邀請碼,我想很多人都遇到過。 String s = "邀請您加入隨心購,自動搜尋淘寶天貓優惠券!先領券,再購

Java學習——表示式

1匹配驗證-驗證Email是否正確 package test_script; import java.util.regex.Matcher; import java.util.regex.Pattern; public class regtest { public static vo

java表示式的瞭解與實踐記錄

Pattern pattern = Pattern.compile("^\\S+/q/"); Matcher matcher = pattern.matcher(resultString); String qrcode=""; while(matcher.find()){ String path

第11篇 Java反射/表示式

反射技術:其實就是動態載入一個指定的類,並獲取該類中的所有的內容。而且將位元組碼檔案封裝成物件,並將位元組碼檔案中的內容都封裝成物件,這樣便於操作這些成員。簡單說:反射技術可以對一個類進行解剖。   反射的好處:大大的增強了程式的擴充套件性。   反射的基本步驟:

Java表示式相關類Pattern和Matcher的使用

在Java中,java.util.regex包定義了正則表示式使用到的相關類,其中最主要的兩個類為:Pattern、Matcher:   Pattern 編譯正則表示式後建立一個匹配模式;   Matcher 使用Pattern例項提供的正則表示式對目標字串進行匹

【知識積累】(二)、深入Regex(表示式

\:將下一個字元標記符、或一個向後引用、或一個八進位制轉義符。例如,“\\n”匹配\n。“\n”匹配換行符。序列“\\”匹配“\”而“\(”則匹配“(”。即相當於多種程式語言中都有的“轉義字元”的概念。 ^:匹配輸入字串的開始位置。如果設定了RegExp物件的Multiline屬性,^也匹配“\n

Java簡單表示式實現

前言:由於工作中涉及對正則的使用,所以簡單的整理一下Java中正則的使用,做一個自我檢討和筆記整理。 Java中校驗某個字串是否滿足某個規則,可以簡單到直接使用String類的matches方法。 例如: // 校驗手機號碼有效性 String regex = "^1[

java郵箱表示式

package com.Janson.test; /** * @author Janson */ import java.util.regex.*; public class test { public static boolean checkEmaile

Java表示式

字元類: [abc] a、b 或 c [^abc] 任何字元,除了abc [a-zA-Z] a 到 z 或 A 到 Z ,兩頭的字母包括在內 [0-9] 0到9 的字元都包括 預定義字元類: . 任何字元 \d 數字:[0-9] 示例:判斷手機號的規則: String regex = “

java-Script-----表示式(15)

收集整理了15個常用的javaScript正則表示式,其中包括使用者名稱、密碼強度、整數、數字、電子郵件地址(Email)、手機號碼、身份證號、URL地址、 IPv4地址、 十六進位制顏色、 日期、 QQ號碼、 微訊號、車牌號、中文正則。表單驗證處理必備。 1 使用者名稱正

Java使用表示式(-|\\+)?(\\d+)*.?\\d+匹配正數、負數、浮點數

1簡介 可以使用正則表示式對字串進行匹配,比如對使用者輸入的字串進行有效性驗證。 2Java正則表示式 正則表示式定義了字串的模式。 正則表示式可以用來搜尋、編輯或處理文字。 正則表示式並不僅限於某一種

java利用表示式提取字串中的整數和小數部分

最近開發遇到一個新的東西,就是前端傳過來一個字串,需要將裡面的數字提取出來,倒騰了一天,最後還是沒有倒騰出來,最後還是借鑑大佬的方法。記錄一下。 首先是前端傳來的字串“小明通過掃碼向你付款100000.566元”其中暱稱和金額不是固定的,其他是固定的。 於是便考慮使用“通過掃碼向你付

java表示式、Pattern和Matcher類小結

  最近在實際開發中遇到了2個坑,都和正則表示式有關。一個是public String[] split(String regex),入參居然是正則表示式!!!另一個坑與Pattern、Matcher類的操作有關。都是對java的正則表示式不夠熟悉導致。特地整理一

1000行程式碼徒手寫表示式引擎【1】--JAVA表示式的使用

簡介: 本文是系列部落格的第一篇,主要講解和分析正則表示式規則以及JAVA中原生正則表示式引擎的使用。在後續的文章中會涉及基於NFA的正則表示式引擎內部的工作原理,並在此基礎上用1000行左右的JAVA程式碼,實現一個支援常用功能的正則表示式引擎。它支援貪婪匹配和懶惰匹配;支援零寬度字元(如“\b”, “\B

java利用表示式提取年月日資料

package com.amarsoft.court.app.util; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.regex