1--常用特殊字符总结
特殊字符 | 解释 |
---|---|
$ | 匹配输入字符串的结尾位置。要匹配 $ 字符本身,请使用 \$。 |
( ) | 标记一个子表达式的开始和结束位置。要匹配这些字符,请使用 \( 和 \)。 |
* | 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 |
+ | 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 |
. | 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。 |
[ | 标记一个中括号表达式的开始。要匹配 [,请使用 \[。 |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 |
\ | 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。 |
^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 \^。 |
{ | 标记限定符表达式的开始。要匹配 {,请使用 \{。 |
| | 指明两项之间的一个选择。要匹配 |,请使用 \|。 |
2--findall()隐式和显式匹配字符串
隐式匹配指的是:模式串使用了特殊字符(例如:. * ?等)来匹配字符串,其在使用findall()只会返回起始字符和结束字符之间的字符串。
显式匹配指的是:模式串不使用特殊字符来匹配字符串,而采取完整的字符子串进行匹配,其在使用findall()进行查询时会返回完整的字符子串。
实例代码:
import re
# 隐式匹配两个字符之间的字符串
def demo1():
pattern = ',(.*)!'
text = "Hello, World!"
print(re.findall(pattern, text))
# 显式匹配字符串
def demo2():
pattern = "World"
text = "Hello, World!"
print(re.findall(pattern, text))
if __name__ == "__main__":
demo1() # [' World']
demo2() # ['World']
3--常用匹配常量总结
3-1--re.IGNORECASE忽略大小写进行匹配
import re
# 显式匹配
def demo1():
pattern = 'worlD'
text = "Hello, World!"
print(re.findall(pattern, text, re.IGNORECASE))
if __name__ == "__main__":
demo1() # ['World']
3-2--re.ASCII只匹配ASCII字符
import re
# 显式匹配
def demo1():
pattern = '\w+' # 默认匹配所有字符
text = "你好, World123!"
print(re.findall(pattern, text, re.ASCII))
if __name__ == "__main__":
demo1() # ['World123']
3-3--re.DOTALL连同\n一起匹配
import re
def demo1():
pattern = r'.*'
text = "你好\n, World123!"
print(re.findall(pattern, text)) # ['你好', '', ', World123!', '']
print(re.findall(pattern, text, re.DOTALL)) # ['你好\n, World123!', '']
if __name__ == "__main__":
demo1()