python正则表达式

re.match()函数只检测RE是不是在string的开始位置匹配
re.match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none

# 语法
# re.match(pattern, string, flags=0)
# eg_v1 import re match = "https://www.python.org" print (re.match("http",match).span()) # span() 返回一个元组包含匹配 (开始,结束) 的位置 # (0, 4) print (re.match("www",match)) # None

  


re.search函数会在字符串内查找模式匹配,直到找到第一个匹配然后返回,如果字符串没有匹配,则返回None

# 语法
# re.search(pattern, string, flags=0)

# eg_v2
import re

print (re.search("https","https://www.baidu.com").span())
# (0, 5)
print (re.search("baidu","https://www.baidu.com").span())
# (12, 17)



re.sub函数,re.sub用于替换字符串中的匹配项
# 语法:
# re.sub(pattern, repl, string, count=0, flags=0)
# 参数:
# pattern : 正则中的模式字符串。
# repl : 替换的字符串,也可为一个函数。
# string : 要被查找替换的原始字符串。
# count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

# eg_v3
import re
txt = "A man is known by the silence he keeps"
print (re.sub(r"\s+","_",txt))
# A_man_is_known_by_the_silence_he_keeps


re.compile 函数,把正则表达式编译成一个正则表达式对象
# 语法
# re.compile(pattern, flags=0)

# eg_v4
import re
tsxt = "Happiness is in the doing, right? Not in the getting what you want."
regex = re.compile(r"\w*do\w*")
print (regex.findall(tsxt))  #查找所有包含'do'的单词
# ['doing']
print (regex.sub(lambda m: "[" + m.group(0) + "]",tsxt))  #将字符串中含有'do'的单词用[]括起来
# Happiness is in the [doing], right? Not in the getting what you want.

  

 

posted @ 2017-04-18 12:02  xie仗剑天涯  阅读(2262)  评论(0编辑  收藏  举报