正則表示小記

2022-08-21 21:51:06 字數 1419 閱讀 1130

re中一般用''區分自定義字元,這個與在字元傳中相同的字母和目的的字串衝突,e.g.'\\'用來表示"\",因為每個''都是"\"

解決方法: re中用r表示raw string.也就是說r"\n"代表''和'n'這兩個字元

re.escape(pattern)

忽略在pattern中的某些特定的字元, 也就是說不包含metacharacter(在計算機中有特定含義的字元,例如\,*,+,(,{,|,^,$等)

e.g. (python3.6)

>>> import re

>>> re.escape('^a.*s')

'\\^a\\.\\*s'

>>> re.escape('python.exe')

'python\\.exe'

在py3.3之後,'_'不會被escaped,也就是說,下面這兩種sub的表達方式一致:

>>> re.sub('a', re.escape('_'), 'aa')

'__'

>>> re.sub('a', lambda _:'_', 'aa')

'__'

>>>

*但是,與sub()和subn(),escape一般不用在中間

re.i: 代表忽略大小寫
re.compile(pattern,flags=0):將正則表達模式編譯成乙個正則表達物件, 這個物件可以用在match(),search()或者其他方法中進行匹配.

prog = re.compile(pattern)

result=prog.match(string)

與result=re.match(pattern, string)

等價但是,當同乙個模式多次匹配的時候,上面的compile方式會更有效率

re.finditer(pattern, string, flags=0) or pattern_object.finditer(string, flags=0)

返回乙個iterator,為string中沒有重疊的匹配pattern的match objects, 傳回順序為string由左到右按照順序匹配的順序

match.start([group]) 返回該group匹配的子字串的起始未知的位置index, group引數預設為0,也就是整個匹配的字串

match.end([group])同理,返回的是結束未知的index

>>> email = "tony@tiremove_thisger.net"

>>> m = re.search("remove_this", email)

>>> email[:m.start()] + email[m.end():]

'[email protected]'

BugKu 字元?正則?小記

這是乙個簡單題,不過可以用來練練正項表達,小白所寫,大佬見諒 進入鏈結 由 知這是可以通過get傳參得到flag 就是在位址列操作 我們來看看題目的問題 key.key.key key a z punct i 匹配一行字串的開頭 匹配任意字元,除了換行符 匹配括號中的任乙個,amk 匹配 a m 或...

正則表示法Regular Express

裡面不管有幾個字元,都是只代表選擇其中任意乙個 t ae st 代表 test 或者 tast 代表反向選擇 grep n g oole filename 選擇oo前面不是g的字段 位於re的首部 代表只匹配為與行首的字段 the 則you are the 該行不會被選中grep n lower f...

2021 02 15 python正則小記

match多數使用在分組的情況中 輸入 import re p re.compile r d d d 使用r表示輸出的是不轉義的內容 print p.match 2021 02 15 group 3 print p.match 2021 02 15 groups 輸出 15 2021 02 15 如...