這幾天在做乙個正則化的任務,需要正則出乙個檔案中兩個字元之間的所有東西,這是在查詢過程中找到的一些方法,在此記錄下來。(以下都是在python下實現的)
import re
file = open(r'c:\\users\administrator\desktop\檔名.out','rb') #讀取檔案
source = file.read()
source = source.decode('utf-8')
方法一:reg = re.findall(r".*a(.*)b",source)
#該方法可以讀到字元 『a』 和』b』之間的所有字元,但是不能跨行,'a『和』b』需要在同一行。
方法二:reg = re.findall(r'\[([\s\s]+?)\]',source)
#該方法可以正則出之間的內容,但內好像必須有東西,可以跨行正則,即』[『和『]』可以不在同一行。[\s\s]表示匹配所有字元,包括換行符,[\w\w]也有相同的功能,其中[\s]表示空白匹配,[\s]表示非空白匹配。當然萬用字元』.『也可以匹配字元,但是』.'不能匹配換行符。
方法三:reg= re.findall(r'\[((?:.|\n)*?)\]',source)
# 和方法二功能一樣,但就算 [ ] 內沒有東西,也能讀取出來。
方法四:reg = re.findall(r'(?<=a)\d+\.?\d*(?=b)', source)
#可以讀到『a』 和『b』 之間的數字。(?<=想要的字元)表示匹配該字元之後的字串,(?=想要的字元)表示匹配該字元之前的字串,而\d+.?\d* 表示讀取數字,如果不是數字,就不會被匹配到。
以上re.findall返回的都是列表,列表的每個元素的type都是字串(如果有的話)。
###**********************************
方法五:關於正規表示式的零寬斷言,如下:
import re
mystr =
'a111223344bb'
my = re.findall(r".*a(.*)b"
,mystr)
print
(my)
my1 = re.findall(r".*a(.*)(?
,mystr)
#正則匹配a b之間的字元,並斷言 b之前的字串不會是b
print
(my1)
#結果#['111223344b']
#['111223344']
還是個菜鳥,有不對的地方,還請指出。很多都是從其他部落格看來的,但是也忘記在哪看的了,就都沒有標明了。
以上,僅作為個人記錄。第一次寫hhhhh.
python正則 匹配兩個符號開頭和結尾的長字串
使用re正則匹配符號開頭和結尾的長字串 正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。python 自1.5版本起增加了re 模組,它提供 perl 風格的正規表示式模式。re 模組使 python 語言擁有全部的正規表示式功能。compile 函式根據乙個模式字串和...
兩個正則坑
先看第乙個,var re d d var r1 re.test 010 12345 console.log r1 結果控制台給出false。問題在哪?發現把逗號後的空格刪了就好了。習慣性在逗號後敲空格了,尤其是es6對物件進行擴充套件以後,以後不能這樣子了。接下來看個比較難的,零寬正向斷言,不熟悉的...
python兩個乘號 用Python如何解數學方程
大家可以先口算一下,這道題裡面的x的值為200 接下來我們用python來實現,如下,每一句 後面都寫有解釋語 import sympy 引入解方程的專業模組sympy x sympy.symbols x 申明未知數 x a sympy.solve x 1 5 x 240 x 寫入需要解的方程體 p...