導航:首頁 > 源碼編譯 > 簡單表達式編譯

簡單表達式編譯

發布時間:2024-03-17 06:25:09

java正則表達式

1、Java 正則表達式:

正則表達式定義了字元串的模式。正則表達式可以用來搜索、編輯或處理文本。正則表達式並不僅限於某一種語言,但是在困桐每種語言中有細微的差別。

2、正則表達式實例

一個字元串其實就是一個簡單的正則表達式,例如 Hello World 正則表達式匹配 Hello World 字元串。.(點號)也是一個正則表達式,它匹配任何一個字元如:a 或 1。

3、java.util.regex 包主要包括以下三個類:

(1)Pattern 類:

pattern 對象是一個正則表達式的編譯表示。Pattern 類沒有公共構造方法。要創建一個 Pattern 對象,你必須首先調用其公共靜態編譯方法,它返回一個 Pattern 對象。該方法接受一個正則表達式作為它的第一個參數。

(2)Matcher 類頌汪:

Matcher 對象是對輸入字元串進行解釋和匹配操作的引擎。與Pattern 類一樣,Matcher 也沒有公野尺仔共構造方法。你需要調用 Pattern 對象的 matcher 方法來獲得一個 Matcher 對象。

(3)PatternSyntaxException:

PatternSyntaxException 是一個非強制異常類,它表示一個正則表達式模式中的語法錯誤。

Ⅱ 編譯原理正則表達式化簡

你好,語言L={a}{a,b}∗({ϵ}∪({.,_}{a,b}{a,b}∗))L={a}{a,b}

({ϵ}∪({.,_}{a,b}{a,b}

))
這個語言是指,由a開頭,後接任意長度的a、b串,然後再接空串(代表結束)。或者是接以.或_開頭的,後接長度大於等於1的a、b串。

正則表達式(Regular Expression, RE)是一種用來描述正則語言的更緊湊的表示方法。

python其實很簡單 第十一章 正則表達式

正則表達式是一個特殊的字元序列,它用來檢查一個字元串是否與某種模式匹配。正則表達式在編譯程序中至關重要,但並不是每個人都需要特別深入的學習和掌握。在此,只介紹一些最基本的應用。

1、元字元

元字元是構成正則表達式的一些特殊字元。在正則表達式中,元字元被賦予了新的含義。

下面介紹一些常用的元字元及其含義:

. 匹配除換行符以外的任意字元。

w 匹配字母、數字、下劃線或漢字。

W 匹配w所匹配的字元以外的字元。

s 匹配單個空白符(包括Tab鍵和換行符)。

S 匹配除s匹配的字元以外的字元。

d 匹配數字。

b 匹配單詞的分界符,如:空格、標點符號或換行符。

^ 匹配字元串的開始

$ 匹配字元串的結束

2、限定符

限定符是在正則表達式中用來指定數量的字元。常用的限定符有:

? 匹配前面的字元0或1次。如:zo?m可以匹配zom和zm,但不能匹配 zoom

+ 匹配前面的字元1或n次。如:zo?m可以匹配zom和zoom,但不能匹配zm

* 匹配前面的字元0或n次。如:zo?m可以匹配zom、zoom和zm

{n} 匹配前面的字元n次。如:zo{2}m可以匹配zoom,但不能匹配zom和zm

{n,} 匹配前面的字元至少n次。如:zo{1,}m可以匹配zom和zoom,但不能匹配zm

{n,m} 匹配前面的字元至少n次,最多m次。如:zo{1,2}m可以匹配zom和zoom,但不能匹配zm

3、方括弧」[ ]」的用途

方括弧「[ ]」里可以列出某個字元范圍。如:[aeiou]表示匹配任意一個母音字母,[zqsl]表示匹配姓氏「趙錢孫李」的拼音第一個字母。

4、排除字元

方括弧」[ ]」中的「^」字元表示排除的意思,如:[^aeiou]表示匹配任意一個非母音字母的字元。

5、選擇字元

字元「|」相當於「或」。如:(^d{3}[-]d{8})|(^d{4}[-]d{7})$可以匹配形如」 - 」或「 - 」的電話號碼格式。

6、轉義字元

對於已經用於定義元字元和限定符的字元,需要加轉義符「」來表示。

如:為了匹配形如「192.168.0.1」的IPv4地址(1~255.0~255.0~255.0~255),可以用這樣的正則表達式:^(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$

這里解釋一下第一段IP地址的規則,取值范圍為1~255,可分解為以下情況:

250~255:25[0-5];

200~249:2[0-4][0-9];

100~199:[01]{1}[0-9]{2};

0~99: [0-9]{1}[1-9]

再加上」.」: .

其他三段地址和第一段相似。

7、「( )」可以用於分組

在正則表達式中,用「( )」括起來的部分是一個整體。

8、r(或R)的意義

在正則表達式中,為了保證模式字元串為原生字元串(沒有經過加工處理的字元串),可以在模式字元串前加上一個字元『r』或『R』。例如:

# 這里用到對的re.match()方法接下來介紹

>>> import re # 導入re模塊

>>> re.match('bPy[a-z]+','Python') # 表達式'bPy[a-z]+'不能匹配』Python』

>>> re.match('bPy[a-z]+','Python') # 表達式'bPy[a-z]+'可以匹配』Python』

在上述代碼中,原本要用作匹配單詞開始或結束的元字元』b』在表達式中字元串中會被視為轉義一個字元『b』,為了轉義』b』就不得不再加一個』』符號。

也可以採用下面的方法:

>>> re.match(r'bPy[a-z]+','Python') #加字元』r』,可以保證原生字元串

9、match()方法

Match()方法 嘗試從字元串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match() 就返回 none。

語法格式:

re.match(pattern, string, [flags])

其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。

例:

import re #導入re模塊

print(re.match('www', 'www.python.org/').span()) #span()函數可以獲取匹配的位置

print(re.match('org', 'www.python.org'))

輸出結果為:

(0, 3) #在位置0到3(不包括3)匹配成功

None #從起始位置未能匹配成功

10、search()方法

search()方法用於在整個字元串中搜索第一個匹配的值,如果匹配成功,則返回Match對象,否則返回None。

語法格式:

re.search(pattern, string, [flags])

其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。

例如:

>>> re.search(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.')

可以看出,目標字元串「It's easy to use Python, but it's not easy to learn Python.」中一共有兩個『Python』,search()方法可以從字元串的起始位置開始查找到『Python』,當找到第一個匹配值後就停止查找,返回位置信息。

match()和search()的比較

match()要求目標字元串的起始位置就能匹配,search()對目標字元串全段進行逐次匹配,只要首次匹配成功就停止匹配。

請看下例:

>>> import re

>>> print(re.match(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.'))

輸出結果:None

11、findall()方法

findall()方法用於在整個字元串中搜索所有匹配的值,如果匹配成功,則返回以匹配值為元素的列表,否則返回空列表。

語法格式:

re.findall(pattern, string[, flags])

其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。

例:

>>> import re

>>>print(re.findall(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.'))

輸出結果:['Python', 'Python']

可以看出,findall()的結果沒有指出匹配的具體位置。

12、正則表達式的應用

字元串替換

這里要用到sub()方法。它的語法格式如下:

re.sub(pattern, repl, string [,count] [,flgs])

其中,pattern是模式字元串;repl是用於替換的字元串;string是原字元串;可選參數count為模式匹配後替換的最大次數,省缺表示替換所有的匹配;可選參數flags的意義與前面的方法的該參數一致。

例:

>>> import re

>>> str1='x=36.567 y=123.234'

>>> str2=re.sub('.d+','',str1) #用空格代替小數點及其後的數字

>>> print(str2)

輸出結果:x=36 y=123

分隔字元串

這里要用到split()方法。它的返回值為一個列表,它的語法格式如下:

re.split(pattern, string [,maxsplit] [,flgs])

其中,pattern是模式字元串;string是原字元串;可選參數maxsplit為最大拆分次數,省缺表示拆分所有的匹配;可選參數flags的意義與前面的方法的該參數一致。

例:

>>> import re

>>> str='白日依山盡,黃河入海流。欲窮千里目,更上一層樓!'

>>> re.split(r',|。|!',str) #按照「,」、「。」、「!」分隔字元串。

['白日依山盡', '黃河入海流', '欲窮千里目', '更上一層樓', '']

注意,返回值列表中多出了一個空字元。

閱讀全文

與簡單表達式編譯相關的資料

熱點內容
linux空值 瀏覽:137
剪力牆鋼筋用不用加密區 瀏覽:978
哪裡app可以上高中生物課 瀏覽:472
cad粗糙度快捷鍵命令大全 瀏覽:521
騰訊雲伺服器無法運行軟體 瀏覽:342
奔跑吧哪個app 瀏覽:97
哪個app聽音樂最好 瀏覽:281
考研英語2真題pdf 瀏覽:699
煙台編程積木教育環境好不好 瀏覽:214
python優秀代碼 瀏覽:620
androidtop命令 瀏覽:455
你平時怎麼排解壓力 瀏覽:68
表格中的文件夾怎樣設置 瀏覽:476
em78單片機 瀏覽:960
splitjava空格 瀏覽:248
電腦怎麼谷歌伺服器地址 瀏覽:515
nx自定義工具啟動宏命令 瀏覽:101
程序員怎麼解決無法訪問互聯網 瀏覽:303
java訪問本地文件 瀏覽:747
瓦斯琪伺服器怎麼用 瀏覽:22