正则表达式

用正则寻找配对

pattern1 = "cat"

pattern2 = "bird"

string = "dog run to cat"

res = re.search(pattern1, string)

匹配多种可能 []

print(re.search(r"r[A-Z]n", "dog runs to cat"))

print(re.search(r"r[A-Za-z]n", "dog runs to cat"))

print(re.search(r"r[0-9]n", "dog r6ns to cat"))

print(re.search(r"r[0-9a-z]n", "dog rbns to cat"))

print(re.search(r"dog", "dog rbns to cat").span())

数字\d

print('--------------------')

print(re.search(r"r\dn", "dog r6ns to cat"))

非数字\D

print(re.search(r"r\Dn", "dog rgns to cat"))

空白  any white space [\t\n\r\f\v]

[\t\n\r\f\v]在字符串里面代表空白,用\s来匹配

print(re.search(r"r\sn", "dog r\nns to cat"))

\S与\s相反,匹配非空白

print(re.search(r"r\Sn", "dog r\nns to cat"))

所有的字母,数字和 "_"

r"[a-zA-Z0-9_]"

用\w表示

print(re.search(r"r\wn", "dog r\nns to  r4n cat"))

\W  opposite to \w   \w的取反

print(re.search(r"r\Wn", "dog r\nns to  r4n cat"))

空白字符  border  词边界

print(re.search(r"\bruns\b", "dog runs to  r4n cat"))

特殊字符 任意字符

print(re.search(r"runs\\", "dog  runs\\  to   cat"))

print(re.search(r"r.ns", "dog  r[ns  to   cat"))

'.'可以匹配任意数字字母字符等等

句首句尾

print(re.search(r"^dog","dog  runs to cat" )) 以dog 开头

print(re.search(r"cat$","dog  runs to cat" )) 以cat 结尾

是否

print(re.search(r"Mon(day)?","Monday" ))

print(re.search(r"Mon(day)?","Mon" ))

8 多行匹配

muti-line

string = """

dog  runs to cat

I run to dog.

"""

print(re.search(r'^I', string))

只匹配字母串行首

print(re.search(r'^I', string, flags=re.M))

加这个flags=re.M,是多行匹配,这个题的意思是找每一行的行首是不是I.

每一行结尾都有一个换行符,所以是算一个字符

0 或 多次

print(re.search(r"ab*", "a"))

print(re.search(r"ab*", "abbb"))

1 或 多次

print(re.search(r"ab+", "a"))

print(re.search(r"ab+", "ab"))

print(re.search(r"ab+", "abbbbbb"))

次数可选

print(re.search(r"ab{2,10}", "a"))

print(re.search(r"ab{2,10}", "ab"))

print(re.search(r"ab{2,10}", "abbbb"))

次数可以根据自己需要,往{}里面随意填写

组 group

match = re.search(r"(\d+), Date: (.+)", "ID: 012345, Date: Feb/12/2017")

print(match)

print(match.group())

print(match.group(1))

取第一个正则表达式的结果

print(match.group(2))

取第二个正则表达式的结果

组起名

match = re.search(r"(?P<id>\d+), Date: (?P<date>.+)", "ID: 012345, Date: Feb/12/2017")

把(?P<id>\d+)取到的正则表达式的结果命名为id,把(?P<date>.+)取到的正则表达式的结果命名为date

print(match)

print(match.group())

print(match.group('id'))

把命名为id的正则表达式结果输出

print(match.group('date'))

把命名为date的正则表达式结果输

仅匹配字符串开头

print()

print(re.search(r"\Aabc", "abcd"))

print(re.search(r"\Aabc", " abcd"))

仅匹配 字符串末尾

print(re.search(r"abc\Z", "dsafsdabc"))

print(re.search(r"abc\Z", "dsafsdabcd"))

等号后面是表达式, 匹配表达式才能成功

print(re.search(r"a(?=\d)", "a123"))

print(re.search(r"a(?=\d)", "ax123"))

print(re.search(r"a(?=\w)", "ax123"))

print(re.search(r"a(?=\w)", "a*123"))

print(re.search(r"a(?=y)", "ay123"))

print(re.search(r"a(?=y\d)", "ay123"))

print()

print(re.search(r"a(?=y\d)", "ayu23"))

print(re.search(r"a(?=y\W)", "ay^23"))

!后面是表达式。 不匹配表达式 才能成功

print(re.search(r"a(?!\W)", "as^23"))  第138行 的取反

19 ? 后面表达式, 匹配了才能成功  BRE

print('===================')

print(re.search(r"(?<=\d)a", "123a"))  

print(re.search(r"(?<=123)a", "123a"))

print(re.search(r"(?<=124)a", "123a"))

print("dog r\ns to cat")

\n是换行符

 match  方法

 match  尝试从字符创的起始位置匹配一个模式(正则),如果不是起始位置匹配成功的话,就返回None.

re.I 对大小写不敏感。

re.M 多行匹配

print(re.match('google', 'www.google.com'))

print(re.match('google', 'gooGle.com', flags=re.I))

re.search 方法

该方法会扫描整个字符串, 并返回第一个成功的匹配

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值