python re正则表达式模块(Regular Expression)
模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等
复习一下基本的正则表达式吧
.:匹配除了换行符以为的任意单个字符
*:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式
+:匹配位于+之前的一个或者多个字符
|:匹配位于|之前或者之后的字符
^:匹配行首
$:匹配行尾
?:匹配位于?之前的零个或者一个字符,不匹配多个字符
\:表示 \ 之后的为转义字符
[]:匹配[]之中的任意单个字符,[0-9]表示匹配0到9任意一个数字
():将位于()之内的的内容当作一个整体
{}:按{}中的次数进行匹配,100[0-9]{3}表示在100之后任意匹配一个3位数(100-999)
python中以\开头的元字符:
特殊序列符号 |
意义 |
\A |
只在字符串开始进行匹配 |
\Z |
只在字符串结尾进行匹配 |
\b |
匹配位于开始或结尾的空字符串 |
\B |
匹配不位于开始或结尾的空字符串 |
\d |
相当于[0-9] |
\D |
相当于[^0-9] |
\s |
匹配任意空白字符:[\t\n\r\r\v] |
\S |
匹配任意非空白字符:[^\t\n\r\r\v] |
\w |
匹配任意数字和字母:[a-zA-Z0-9] |
\W |
匹配任意非数字和字母:[^a-zA-Z0-9] |
正则表达式语法表
语法 | 意义 | 说明 |
"." | 任意字符 |
|
"^" | 字符串开始 | '^hello'匹配'helloworld'而不匹配'aaaahellobbb' |
"$" | 字符串结尾 | 与上同理 |
"*" |
0 个或多个字符(贪婪匹配) |
匹配 |
"+" |
1 个或多个字符(贪婪匹配) |
与上同理 |
"?" |
0 个或多个字符(贪婪匹配) |
与上同理 |
*?,+?,?? |
以上三个取第一个匹配结果(非贪婪匹配) |
匹配 |
{m,n} |
对于前一个字符重复m到n次,{m}亦可 |
a{6}匹配6个a、a{2,4}匹配2到4个a |
{m,n}? |
对于前一个字符重复m到n次,并取尽可能少 |
‘aaaaaa'中a{2,4}只会匹配2个 |
"\\" |
特殊字符转义或者特殊序列 |
|
[] |
表示一个字符集 | [0-9]、[a-z]、[A-Z]、[^0] |
"|" |
或 | A|B,或运算 |
(...) |
匹配括号中任意表达式 |
|
(?#...) |
注释,可忽略 |
|
(?=...) |
Matches if ... matches next, but doesn't consume the string. |
'(?=test)' 在hellotest中匹配hello |
(?!...) |
Matches if ... doesn't match next. |
'(?!=test)' 若hello后面不为test,匹配hello |
(? |
Matches if preceded by ... (must be fixed length). |
'(?)test' 在hellotest中匹配test |
(? |
Matches if not preceded by ... (must be fixed length). |
'(?test' 在hellotest中不匹配test |
匹配的标志和含义
标志 | 含义 |
re.I | 忽略大小写 |
re.L | 根据本地设置而更改\w,\W,\b,\B,\s,\S的匹配内容 |
re.M | 多行匹配模式 |
re.S | 使“.”元字符匹配换行符 |
re.U | 匹配Unicode字符 |
re.X | 忽略需要匹配模式中的空格,并且可以使用"#"号注释 |
文本内容(提取Linux下的password文件)
man:x:6:12:man:/var/cache/man:/bin/nologin
re模块中有3个搜索函数,每个函数都接受3个参数(匹配模式,要匹配的字符串,进行匹配的标志),如果匹配到了就返回一个对象实例,么有就返会None.
findall():用于在字符串中查找符合正则表达式的字符串,并返回这些字符串的列表
search():搜索整个字符串,返回对象实例
match():只从第一个字符开始匹配,后面的不再匹配,返回对象实例
lovelinux@LoveLinux:~/py/boke$ cat text man:x:6:12:man:/var/cache/man:/bin/sh lovelinux@LoveLinux:~/py/boke$ cat test.py #/usr/bin/env python #coding:utf-8 import re with open('text','r') as txt: f = txt.read() print re.match('bin',f) print re.search('bin',f).end() lovelinux@LoveLinux:~/py/boke$ python test.py None 34 lovelinux@LoveLinux:~/py/boke$ vim test.py lovelinux@LoveLinux:~/py/boke$ python test.py None <_sre.SRE_Match object at 0x7f12fc9f9ed0>
返回是对象实例有2个方法,
start():返回记录匹配到字符的开始索引
end():返回记录匹配到字符的结束索引
lovelinux@LoveLinux:~/py/boke$ python test.py None 31 34 lovelinux@LoveLinux:~/py/boke$ cat test.py #/usr/bin/env python #coding:utf-8 import re with open('text','r') as txt: f = txt.read() print re.match('bin',f) print re.search('bin',f).start() print re.search('bin',f).end()

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。
