A. python正則表達式的幾種匹配方法
1.測試正則表達式是否匹配字元串的全部或部分
regex=ur"" #正則表達式
if re.search(regex, subject):
do_something()
else:
do_anotherthing()
2.測試正則表達式是否匹配整個字元串
regex=ur"/Z" #正則表達式末尾以/Z結束
if re.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)
if match:
# 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)
if match:
result = match.group()
else:
result = ""
B. python 判斷正則表達式
看了你的提問,你的要求是:
輸入格式:
輸入包含兩行:
待匹配字元串
正則表達式
輸出格式:
若正則表達式能夠匹配第一行字元串則輸出True,否則,輸出False
以下是我依據你的功能需求,個人簡單寫的一些代碼,供你參考:
importre
flg=True
#定義主要工作代碼函數
defjobCode(txtstr,regex):
result=re.search(regex,txtstr)
#如果匹配第一行字元串flg為True,否則flg為False
ifresult.group()==txtstr:
#print(result.group())
returnflg==True#返回flg並終止循環
else:
#print(result.group())
returnflg==False#返回flg並終止循環
#程序主入口
if__name__=='__main__':
txtstr=str(input("請輸入待匹配的字元串:"))
regex=input("請輸入正則表達式:")
print(jobCode(txtstr,regex))#調用定義函數jobCode()
代碼應該還能更簡潔,具體你自己去完善。
純手工,如果對你有幫助望採納!
C. 求python 正則表達式, regex 判斷是否存在abc.abc.abc
importre
text='''<android.support.v7.internal.widget.ActionBarContextViewandroid:ellipsize="android.support.v7.internal.widget.ActionBarContextView"android:id="@id/action_bar_subtitle"android:visibility="gone"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/abc_action_bar_subtitle_top_margin_material"android:singleLine="true"/>'''
htm=re.findall(r"w+.w+.w+.w+.w+.w+",text)
print(htm)
如果不確定小數點個數
importre
text='''<android.support.v7.internal.widget.ActionBarContextViewandroid:ellipsize="android.support.v7.internal.widget.ActionBarContextView"android:id="@id/action_bar_subtitle"android:visibility="gone"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/abc_action_bar_subtitle_top_margin_material"android:singleLine="true"/>'''
htm=re.findall(r"((w+.)+w+)",text)
fortinhtm:
print(t[0])
D. python的正則表達式怎麼用
在ipython中測試一下代碼:(讀入一個圖片文件的地址字元串)
?
1
2
3
4
5
6
7
8
9
10
11
12
a = input("input a:\n")
print "the input method: ",a
b = raw_input("input b:\n")
print "the raw_input method: ",b
input a:
'/home/sunny/caffe-master/examples/images/cat.jpg'
the input method: /home/sunny/caffe-master/examples/images/cat.jpg
input b:
'/home/sunny/caffe-master/examples/images/cat.jpg'
the raw_input method: '/home/sunny/caffe-master/examples/images/cat.jpg'
另外,對於兩種輸入方式另一個直觀區別就是input自帶運算處理功能,也就是輸入算式的話會直接輸出結果,而raw_input會原汁原味(raw)地輸出:
?
1
2
3
4
#! -*- coding:utf-8 -*-
print raw_input(u'測試raw_input:\n')
print input(u'測試input:\n')
E. python正則表達式,匹配開頭和結尾獲取字元串
importre
A='''/22Q1006NOSIG=<BR/>/23Q1007NOSIG=<BR/>/22Q1006NOSIG=<BR/>'''
reg=re.findall(r'(?:METAR|SPECI)+[^=]+=',A)
print(reg[0])
F. Python正則表達式的幾種匹配用法
下面列出: 1.測試正則表達式是否匹配字元串的全部或部分regex=ur"" #正則表達式
if re.search(regex, subject): do_something()else: do_anotherthing() 2.測試正則表達式是否匹配整個字元串 regex=ur"/Z" #正則表達式末尾以/Z結束
if re.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)if match: # 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)if match: result = match.group()else: result ="" 5. 獲取捕獲組所匹配的子串(Get the part of a string matched by a capturing group) regex=ur"" #正則表達式
match = re.search(regex, subject)if match: 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) for match in re.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)if reobj.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 結束
if reobj.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)if match: # 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)if match: 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)if match: 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)if match: 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)for match in reobj.finditer(subject): # match start: match.start() # match end (exclusive): match.end() # matched text: match.group()字元串替換 1.替換所有匹配的子串 #用newstring替換subject中所有與正則表達式regex匹配的子串
result = re.sub(regex, newstring, subject) 2.替換所有匹配的子串(使用正則表達式對象) reobj = re.compile(regex) result = reobj.sub(newstring, subject) 字元串拆分 1.字元串拆分 result = re.split(regex, subject) 2.字元串拆分(使用正則表示式對象) reobj = re.compile(regex) result = reobj.split(subject)
G. 正則(=.*[a-z])是什麼意思
.代表任意字元,(?=.*[a-z]) 表示任意字元拼接小寫字母,那(?=[a-z])跟它有什麼區別?
首先(?=xxx) 是 look ahead=你說的 前瞻
此處xxx的區別:
.*[a-z]:任意字元,且個數盡量多,後跟單個小寫字母
舉例:12AB3c4d
[a-z]:單個小寫字母
舉例:12AB3c4d 只能匹配到:12AB3c
12AB3是前面部分
c是最後的[a-z]匹配的
-》其實,更准確的解釋需要你給出完整的正則,而不僅僅是look ahead的部分,才能詳細和精確解釋匹配的內容和邏輯。
前瞻:exp1(?=exp2) 查找exp2前面的exp1,
後顧:(?<=exp2)exp1 查找exp2後面的exp1,
(?=.*[a-z]). 和 .(?=.*[a-z]) 我測試都能運行,反而(?<=.*[a-z]). 運行不了,是不是後顧表達式不能用 (?<=exp2)exp1 了?
不是。而是:
look behind=後顧 有個特殊的情況:只支持固定長度,比如123,而不支持不定長度的,比如d+
你的(?<=.*[a-z]). 中的.*[a-z] ,屬於正則寫法,能匹配到不固定長度的字元,所以不支持,會報錯的。
官網解釋,詳見python中的re
re --- 正則表達式操作 — Python 3.8.1 文檔
(?<=…)
匹配字元串的當前位置,它的前面匹配…的內容到當前位置。這叫:dfn:positive lookbehind assertion(正向後視斷定)。(?<=abc)def會在'abcdef'中找到一個匹配,因為後視會往後看3個字元並檢查是否包含匹配的樣式。包含的匹配樣式必須是定長的,意思就是abc或a|b是允許的,但是a*和a{3,4}不可以。
注意其中的「包含的匹配樣式必須是定長的」
用菜鳥工具正則表達式在線測試,abcD去匹配 (?=.*[a-z]). 匹配結果是 a b c,為什麼a也能匹配,a的前面什麼都沒有啊!
建議換用更好用的
RegExr: Learn, Build, & Test RegEx
H. python 正則表達式是什麼
正則表達式是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。
正則表達式是用來匹配字元串非常強大的工具,在其他編程語言中同樣有正則表達式的概念,Python同樣不例外,利用了正則表達式,我們想要從返回的頁面內容提取出我們想要的內容就易如反掌了。
正則表達式的大致匹配過程是:
1、依次拿出表達式和文本中的字元比較。
2、如果每一個字元都能匹配,則匹配成功;一旦有匹配不成功的字元則匹配失敗。
3、如果表達式中有量詞或邊界,這個過程會稍微有一些不同。
I. 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']
(9)python正則表達式在線測試擴展閱讀:
python正則匹配,以某某開頭某某結尾的最長子串匹配
代碼如下:
regVersions = re.search(r'(V|v)[0-9].*[0-9]', filename)
if regVersions:
print regVersions.group()
J. python正則表達式是什麼呢
python正則表達式如下:
在python中,所謂的「正則表達式」指的是通常被用來檢索、替換那些符合某個模式的一段文本。具體而言,它的作用是檢測某個字元串是否符合規則和提取網頁字元串中想要的數據。
正則表達式是對字元串提取的一套規則,我們把這個規則用正則裡面的特定語法表達出來,去匹配滿足這個規則的字元串。正則表達式具有通用型,不僅python裡面可以用,其他的語言也一樣適用。
python的編程特點:
速度快:Python的底層是用C語言寫的,很多標准庫和第三方庫也都是用C寫的,運行速度非常快。
免費、開源:Python是FLOSS(自由/開放源碼軟體)之一。使用者可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。
高層語言:用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
解釋性:一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。