python 如何正則出兩個符號或字母之間的字串

2021-09-10 18:21:16 字數 1382 閱讀 1354

這幾天在做乙個正則化的任務,需要正則出乙個檔案中兩個字元之間的所有東西,這是在查詢過程中找到的一些方法,在此記錄下來。(以下都是在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...