【学习记录】Python-Regular Expression
基本用法
re.match('xxx',string_a)
:在字符串a的开头匹配xxx,如果匹配成功则返回值为1。re.search('xxx',string_a)
:在字符串a中匹配一个xxx,如果匹配成功则返回值为1。re.findall('xxx',string_a)
:在字符串a中匹配所有xxx,如果匹配成功则返回列表。re.finditer('xxx',string_a)
:在字符串a中匹配所有xxx,如果匹配成功则以迭代器返回。re.sub('xxx','aaa',string_a)
:将字符串a中的xxx替换为aaa,如果替换成功则返回替换后的字符串。re.xxx().start()
:返回匹配到的字符的起始位置。re.xxx().end()
:返回匹配到的字符的结束位置。re.xxx().span()
:返回匹配到的字符的起始和结束位置。
匹配符
-
^
:匹配字符串的开头。例:
re.search('^xxx',string_a)
:在string_a的开头查找,如果符合则返回值为1,类似字符串函数中的string_a.startwith('xxx')
。 -
$
:匹配字符串的末尾。 -
.
:匹配除换行符外的任意字符。 -
[abcd]
:匹配单个字符,a
、b
、c
或d
。 -
[^abcd]
:匹配除a
、b
、c
、d
以外的字符。 -
[a-z]
:匹配范围内的字符 -
*
:重复匹配字符0次或多次。 -
+
:重复匹配字符1次或多次。 -
?
:非贪婪方式。 -
\s
:匹配空格符。 -
\S
: 匹配非空格字符。 -
abc(xxx)
:匹配(match)abcxxx,但只提取(extract)xxx。
标志位
re.I
忽略大小写re.L
表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境re.M
多行模式re.S
即为’ . ‘并且包括换行符在内的任意字符(’ . '不包括换行符)re.U
表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库re.X
为了增加可读性,忽略空格和’ # '后面的注释
转义
在字符串前加上 r
,表明字符串为原始字符串常量(加上 u
为Unicode字符串常量,加上 b
为字节字符串常量),原始字符串常量可避免反斜杠 \
的转义,例如:
print('This is a \n test')
结果会因为 \n
换行,而加上 r
则可以避免 n
的转义:
print(r'This is a \n test')
\n
不会引起换行,而是被打印出来。
r
在下面的非法字符匹配中有得到应用。
非法字符匹配
Windows中文件名不能包含 \ / : * ? " < > |
等非法字符,需要在处理文件名时将非法字符删除:
fileName = '\/:*?"<>|test.file'
invalidchar = r"[\/\\\:\*\?\"\<\>\|]"
newName = re.sub(invalidchar, '', fileName)
例子
-
import re
-
import re
-
import re
-
import re
-
import re
实时更新中