python正則開頭
Ⅰ python正則表達式(二)
上節我們說到 Python 正則表達式的基本字元,以及這些字元的用法
今天,我們繼續講講 Python 中一些擴展標記法,以及一些特殊序列
(?...) : 這種擴展標記法以括弧內 ? 開頭,其後第一個字元決定了採用什麼樣的語法。
在 ? 後面添加( 'a', 'i', 'L', 'm', 's', 'u', 'x' 中的一個或多個),然後加上匹配規則。
這些字元對正則表達式設置以下標記,免去設置 flag 參數
注意 : 'a', 'L', 'u' 作為內聯標記是相互排斥的,它們不能結合在一起
括弧分組的非捕獲版本,該分組所匹配的子字元串 不能 在執行匹配後被獲取或是在之後的模式中被引用
可以配合 | 和 {m} 使用
為分組再指定一個組合名
每個組合名只能用一個正則表達式定義,只能定義一次
反向引用一個命名組合
匹配前面那個名字叫 name 的命名組中匹配到的字元串
注釋信息,裡面的內容會被忽略。
哈哈,是不是沒看懂,沒事,舉個栗子
看看,是不是一下子就明了了。
哈哈,這個又看不懂?
思考一下,既然有根據後面字元斷言的,那麼根據前面字元來斷言,也是很合理的,
如果給定的 id 或 name 存在,將會嘗試匹配 yes-pattern ,否則就嘗試匹配 no-pattern , no-pattern 可選,也可以被忽略。
是不是有點像 if else 三目運算,其中 id 和 name 是分組 id 、和指定的分組名 name
照舊,舉個栗子吧
看了栗子是不是有點糊塗呢,我們來解析一下這個正則表達式
其結果匹配的就是 <[email protected]> 和 [email protected] 。
而不會匹配 <[email protected] ' 和 <[email protected]
但是上面的第三個結果為啥不一樣呢?
因為 findall 允許返回空匹配的,在有 ? 的情況下,所以它會分兩種情況去匹配
今天講了一些擴展標記法,其實沒那麼難,多看看例子,多練習練習。
下節將介紹 re 模塊各函數的用法,敬請期待......
Ⅱ python 正則表達式,怎樣匹配以某個字元串開頭
碼如下: # -*- coding: cp936 -*-import restring = "xxxxxxxxxxxxxxxxxxxxxxxx entry '某某內容' for aaaaaaaaaaaaaaaaaa"result = re.findall(".*entry(.*)for.*",string)for x in result: print x# '某某內容'正則表達式的用法如下:
Ⅲ python正則表達式,匹配開頭和結尾獲取字元串
importre
A='''/22Q1006NOSIG=<BR/>/23Q1007NOSIG=<BR/>/22Q1006NOSIG=<BR/>'''
reg=re.findall(r'(?:METAR|SPECI)+[^=]+=',A)
print(reg[0])
Ⅳ python正則表達式是什麼
正則表達式(regex)用於探索給定字元串中的固定模式。我們想找到的模式可以是任何東西。可以創建類似於查找電子郵件或手機號碼的模式。還可以創建查找以a開頭、以z結尾的字元串的模式。
創建模式:
使用正則表達式時,首先需要學習的是如何創建模式。接下來將對一些最常用的模式進行逐一介紹。可以想到最簡單的模式是一個簡單的字元串。
pattern = r'times'
string = "It was the best of times, it was the worst of times."
print(len(re.findall(pattern,string)))

注意:
「正則表達式,又稱規則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或re),是計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本」,那使用正則表達式的目的是什麼呢?網路中只寫了兩句話:
1. 給定的字元串是否符合正則表達式的過濾邏輯(稱作「匹配」)。
2. 可以通過正則表達式,從字元串中獲取我們想要的特定部分。
大家可以簡單的理解為兩點:search和match。OK,了解了正則表達式的概念和作用,我們趕緊進入Python的學習吧!正則表達式不是Python獨有的武器,但Python中的正則表達式無疑是最簡單卻又最強大的。
Ⅳ Python正則表達式之re.match()
我們在面對生物數據,比如序列信息(比如鹼基序列、氨基酸序列等)的時候, 會時常要問,這其中是否包含著且含有多少某種已知的模式,一段DNA中是否包含轉錄起始特徵TATA box、一段RNA中是否包含某種lncRNA、一段肽鏈中是否包含鋅指結構等等;另一方面,我們在操作數據時,會時常遇到諸如把某個字元(對象)換成另一種字元(對象)的替換操作,而其本質還是如何搜索符合某種(替換)模式的對象。
在這些幾乎天天都可以碰到的 模式匹配/搜索問題中,正則表達式就是一把解決問題的利劍!
在Python的re模塊中,常用的有四個方法(match、search、findall、finditer)都可以用於匹配字元串,今天我們先來了解一下re.match()。
re.match()必須從字元串開頭匹配! match方法嘗試從字元串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。主要參數如下:
舉個栗子來理解一下它的用法:
運行結果:
從例子中我們可以看出,re.match()方法返回一個匹配的對象,而不是匹配的內容。通過調用span()可以獲得匹配結果的位置。而如果從起始位置開始沒有匹配成功,即便其他部分包含需要匹配的內容,re.match()也會返回None。
一般一個小括弧括起來就是一個捕獲組。我們可以使用group()來提取每組匹配到的字元串。
group()會返回一個包含所有小組字元串的元組,從 0 到 所含的小組號。
直接調用groups()則直接返回一個包含所有小組字元串的元組,從 1 到 所含的小組號。
再舉一個栗子:
運行結果:
Ⅵ python正則表達式以數字3開頭的
匹配以數字開頭和結尾的字元串例如:3py3.33py3.33-3在最荒唐的年華里遇見對的你,終究是一個沒有後來的結局。
正則表達式是:^[0-9].*[0-9]$後來回憶起的,不是獲得的榮譽,贏取的掌聲,而是忙到快崩潰還咬牙堅持的日子。
^表示文本開始;$表示文本結束;^a.*b$匹配a開頭,b結束的文本正則表達式,又稱規則表達式。
Ⅶ python 正則表達式,怎樣匹配以某個字元串開頭,以某個字元串結尾的情況
python正則匹配以xx開頭以xx結尾的單詞的步驟:
1、假設需要匹配的字元串為:site sea sue sweet see case sse ssee loses需要匹配的為以s開頭以e結尾的單詞。正確的正則式為:sS*?e
2、使用python中re.findall函數表示匹配字元串中所有的可能選項,re是python里的正則表達式模塊。findall是其中一個方法,用來按照提供的正則表達式,去匹配文本中的所有符合條件的字元串。
3、代碼和結果如下:
text ='site sea sue sweet see case sse ssee loses'
re.findall(r'sS*?e',text)
結果為:['site', 'sue', 'see', 'sse', 'ssee']

(7)python正則開頭擴展閱讀:
python正則匹配,以某某開頭某某結尾的最長子串匹配
代碼如下:
regVersions = re.search(r'(V|v)[0-9].*[0-9]', filename)
if regVersions:
print regVersions.group()
Ⅷ python的正則表達式
1,正則表達式的一些內容
正則表達式主要是用來匹配文本中需要查找的內容,例如在一片文章中找出電話號碼,就中國的來說11位純數字(不說座機),則使用"d{11}" 意味匹配數字11次,就能准確的查找出文本中的電話號碼. 還有就是在編寫網路爬蟲的時候需要提取很多超鏈接再次進行爬取,使用正則表達式就很方便.直接匹配http開頭就行,當然也可以使用beautifulsoup的select方法.
看下面的程序看看正則表達提取文本中的郵箱:
w 匹配字母,數字,下劃線
+ 匹配1次或者多次
re是正則表達式的工具包,工具包出錯的話在anaconda的命令行輸入"pip install re"安裝,其他的工具包也是如此.
re.compile()中的r示意不是轉義字元,也就是保持後面字元串原樣,findall返回一個列表.下面還有一個版本的程序略有不同.
compile的另一個參數re.IGONORECASE(忽略大小寫),還可以是re.DORALL,多行模式,具體功能也是模糊不清,不過在使用通配符 . 匹配的時候加上re.DOTALL參數能夠匹配換行.如果希望忽略大小寫和多行模式都開啟可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .
表達式使用( ),對匹配到的內容分為3組 也就是(w+)出現字母,數字,下劃線一次或多次,這個分組就是下面使用match對象的grou()方法的時候的參數.不給參數和參數0都是得到整個匹配到的內容, 參數1得到第一個括弧匹配到的內容,以此類推參數2和3,如果沒有括弧分組的話使用參數會出現錯誤.
search( )查找和正則式匹配的內容,只匹一次後面的那個找不到.返回一個match對象
w 匹配字母,數字,下劃線
W 匹配字母,數字.下劃線之外的所有字元
d 匹配數字
D 匹配非數字
s 匹配空格,製表符,換行符
S匹配除空格製表符,換行符之外的其他字元
[ .... ]定義自己的匹配,如[aeiouAEIOU ]匹配所有的母音字母,注意不是匹配單詞.
{最少次數,最多次數},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默認為匹配最多次數(貪心匹配),非貪心模式在後面加上問號
? 可選 0次或者1次吧
+匹配1次或多次
*匹配0次或者多次
^ 判斷開頭 ^d 如果待匹配串是數字開頭則返回第一個數字
$判斷結尾 d$ 如果待匹配串是數字結尾則返回最後一個數字
. 通配符,匹配除換行之外的所有字元
d{11} 匹配數字11次
. * 匹配所有字元除 換行
[a-zA-Z0-9._%+-] 小寫和大寫字母、數字、句點、下劃線、百分號、加號或短橫
[a-zA-Z]{2,4} 匹配字母 2 - 4次
Ⅸ python 正則表達式,怎樣匹配以某個字元串開頭,以某個字元串結尾的情況
匹配以某個字元串開頭,以某個字元串結尾的情況的正則表達式:^abc.*?qwe$
Python正則表達式的幾種匹配用法:
1.測試正則表達式是否匹配字元串的全部或部分
regex=ur""#正則表達式
ifre.search(regex,subject):
do_something()
else:
do_anotherthing()
2.測試正則表達式是否匹配整個字元串
regex=ur"/Z"#正則表達式末尾以/Z結束
ifre.match(regex,subject):
do_something()
else:
do_anotherthing()
3.創建一個匹配對象,然後通過該對象獲得匹配細節(Create an object with details about how the regex matches (part of) a string)
regex=ur""#正則表達式
match=re.search(regex,subject)
ifmatch:
# match start:match.start()
# match end(exclusive):atch.end()
# matched text:match.group()
do_something()
else:
do_anotherthing()
4.獲取正則表達式所匹配的子串(Get the part of a string matched by the regex)
regex=ur""#正則表達式
match=re.search(regex,subject)
ifmatch:
result=match.group()
else:
result=""
5. 獲取捕獲組所匹配的子串(Get the part of a string matched by a capturing group)
regex=ur""#正則表達式
match=re.search(regex,subject)
ifmatch:
result=match.group(1)
else:
result=""
6. 獲取有名組所匹配的子串(Get the part of a string matched by a named group)
regex=ur"" #正則表達式
match = re.search(regex, subject)
if match:
result = match.group"groupname")
else:
result = ""
7. 將字元串中所有匹配的子串放入數組中(Get an array of all regex matches in a string)
result=re.findall(regex,subject)
8.遍歷所有匹配的子串(Iterate over all matches in a string)
formatchinre.finditer(r"<(.*?)/s*.*?//1>",subject)
# match start:match.start()
# match end(exclusive):atch.end()
# matched text:match.group()
9.通過正則表達式字元串創建一個正則表達式對象(Create an object to use the same regex for many operations)
reobj=re.compile(regex)
10.用法1的正則表達式對象版本(use regex object for if/else branch whether (part of) a string can be matched)
reobj=re.compile(regex)
ifreobj.search(subject):
do_something()
else:
do_anotherthing()
11.用法2的正則表達式對象版本(use regex object for if/else branch whether a string can be matched entirely)
reobj=re.compile(r"/Z")#正則表達式末尾以/Z 結束
ifreobj.match(subject):
do_something()
else:
do_anotherthing()
12.創建一個正則表達式對象,然後通過該對象獲得匹配細節(Create an object with details about how the regex object matches (part of) a string)
reobj=re.compile(regex)
match=reobj.search(subject)
ifmatch:
# match start:match.start()
# match end(exclusive):atch.end()
# matched text:match.group()
do_something()
else:
do_anotherthing()
13.用正則表達式對象獲取匹配子串(Use regex object to get the part of a string matched by the regex)
reobj=re.compile(regex)
match=reobj.search(subject)
ifmatch:
result=match.group()
else:
result=""
14.用正則表達式對象獲取捕獲組所匹配的子串(Use regex object to get the part of a string matched by a capturing group)
reobj=re.compile(regex)
match=reobj.search(subject)
ifmatch:
result=match.group(1)
else:
result=""
15.用正則表達式對象獲取有名組所匹配的子串(Use regex object to get the part of a string matched by a named group)
reobj=re.compile(regex)
match=reobj.search(subject)
ifmatch:
result=match.group("groupname")
else:
result=""
16.用正則表達式對象獲取所有匹配子串並放入數組(Use regex object to get an array of all regex matches in a string)
reobj=re.compile(regex)
result=reobj.findall(subject)
17.通過正則表達式對象遍歷所有匹配子串(Use regex object to iterate over all matches in a string)
reobj=re.compile(regex)
formatchinreobj.finditer(subject):
# match start:match.start()
# match end(exclusive):match.end()
# matched text:match.group()
