1樓:gta小雞
篩選兩遍,第一遍以非貪婪模式找出所有匹配有...中的字串,第二遍剔除其中含有非法字元的匹配結果。
test_str = '有乾燥劑中有乾燥中有發明了xx技術中有發明了xx中'
regex1 = r'有(.+?)中' #匹配所有'有...中'之間的字元
pre_match = re.findall(regex1, test_str) #結果:['乾燥劑','乾燥','發明了xx技術','發明了xx']
regex2 = r'(?!.*乾燥劑)(?!.*發明了.+技術)' #不能含有乾燥劑和發明了..技術字樣
final_match = [s for s in pre_match if re.match(regex2, s)] #結果:['乾燥','發明了xx']
2樓:
這個壓根用不上正規表示式。
比如你要提取「有......中」中間的資訊,直接用字串擷取不就行了,因為你的是沒有規則的字串。
假如這中間資訊含有 乾燥劑 或者 發明了。。技術 ---這個可以通過查詢字串,去做判斷,判斷之後再決定是否要提取這整條資訊。
python 正規表示式如何擷取字串中間的內容
3樓:花臂華盛頓
啟動ipython先匯入re模組
這裡我用到了findall全域性匹配,分為兩部分,前面是正則,後面是要匹配的字串
得到一個元祖
通過變數a 就能列印出想要的字串
在 python 中,我們可以使用內建的 re 模組來使用正規表示式,re 模組提供了不少有用的函式,用以匹配字串,比如:
re 模組的一般使用步驟如下:
使用 compile 函式將正規表示式的字串形式編譯為一個 pattern 物件
通過 pattern 物件提供的一系列方法對文字進行匹配查詢,獲得匹配結果(一個 match 物件)
最後使用 match 物件提供的屬性和方法獲得資訊,根據需要進行其他的操作
findall 方法的使用形式如下:
findall(string[, pos[, endpos]])
其中,string 是待匹配的字串,pos 和 endpos 是可選引數,指定字串的起始和終點位置,預設值分別是 0 和 len (字串長度)。
findall 以列表形式返回全部能匹配的子串,如果沒有匹配,則返回一個空列表。
4樓:
是需要從字串中提取數
字嗎如圖所示:
正規表示式是一個特殊的字元序列,它能幫助你方便的檢查一個字串是否與某種模式匹配。
python 自1.5版本起增加了re 模組,它提供 perl 風格的正規表示式模式。
re 模組使 python 語言擁有全部的正規表示式功能。
compile 函式根據一個模式字串和可選的標誌引數生成一個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。
re 模組也提供了與這些方法功能完全一致的函式,這些函式使用一個模式字串做為它們的第一個引數。
re.match函式
re.match 嘗試從字串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。
函式語法:
re.match(pattern, string, flags=0)
re.search方法
re.search 掃描整個字串並返回第一個成功的匹配。
函式語法:
re.search(pattern, string, flags=0)
re.match與re.search的區別
re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none;而re.search匹配整個字串,直到找到一個匹配。
5樓:自我西郊
import re
pattern = re.compile("forum\/(\d*)\/topic\/(\d*)")
res = pattern.search('forum/135/topic/794150').groups()
print res[0],res[1]
6樓:夢裡尋你我他
\w*\/(\d+)\/\w*\/(\d+)
7樓:隨風飄揚
import re
string = "forum/135/topic/794150"
print(re.findall(r'forum/(\d+)/topic/(\d+)',string))
8樓:匿名使用者
re.findall("\d",a)
9樓:t仝在路上
用re.findall
python正規表示式問題,Python ,正規表示式問題
老夭來了 1 在這裡是什麼用途?表示什麼意思?2 d d 為什麼要加一個括號?是 的不分組版本,意思就是說外面括號不是用來做資料提取的,僅僅是為了做數量指定的,就是說有個多少括號中匹配的資料。比如 d d 就是迴圈匹配 d 這個正則格式的資料 如果解決了您的問題請採納!如果未解決請繼續追問 杜斯奎浦...
lua正規表示式,LUA 正規表示式
lua中修飾符 和 都表示匹配前一字元0次或多次,但 進行的是最短匹配,類似傳統正則中的非貪婪匹配,而 則是最長匹配,即貪婪匹配 由於你正則中最後一個 d 後面沒有任何東西了,那這個 進行了最短匹配,即什麼都不匹配,所以沒有捕獲到1999,而加上 後,由於有了結尾標識位,就必須匹配1999才能使整個...
python正規表示式groups和group有什麼區別
group和groups是兩個不同的函式。一般,m.group n 返回第n組括號匹配的字元。而m.group m.group 0 所有匹配的字元,與括號無關,這個是api規定的。m.groups 返回所有括號匹配的字元,以tuple格式。m.groups m.group 0 m.group 1 對...