江湖散人 发表于 2021-6-28 23:50:37

正则表达式的用法

btregex = re.compile(r'Bat(wo)?man')
mo4 = btregex.search('The Adventures of Batman.')
print(mo4.group())
mo5 = btregex.search('The Adventures of Batwoman.')
print(mo5.group())

第一次输出是Batman。
第二次输出是Batwoman。
正则表达式中问号 ? 表明它前面的模式属于是可选的分组,将出现零次或者一次,
那为什么第二次输出的不是两个呢?{Batman,Batwoman}

深谙流年 发表于 2021-6-29 01:01:40

不是很懂你的意思,第二次输出不是在mo5中输出吗,mo5中就一个Batwoman,哪有Batman呢,这个是不是mo4里面的吗,

wp231957 发表于 2021-6-29 05:54:26

后面的搜索串中没有Batman这个子串

笨鸟学飞 发表于 2021-6-29 11:03:39

第2次从字符串The Adventures of Batwoman中搜索
根据匹配原则,Batman和都Batwoman符合要求,但字符串中并没有Batman。
所以这输出并没问题

kaohsing 发表于 2021-6-29 11:34:18

本帖最后由 kaohsing 于 2021-6-29 19:33 编辑

(wo)?弄懂这个就可以了
括号里是个整体,后跟问号,就表示可有可无。

江湖散人 发表于 2021-6-29 18:48:58

深谙流年 发表于 2021-6-29 01:01
不是很懂你的意思,第二次输出不是在mo5中输出吗,mo5中就一个Batwoman,哪有Batman呢,这个是不是mo4里面 ...

谢谢

江湖散人 发表于 2021-6-29 19:54:39

wp231957 发表于 2021-6-29 05:54
后面的搜索串中没有Batman这个子串

谢谢

江湖散人 发表于 2021-6-29 19:55:10

笨鸟学飞 发表于 2021-6-29 11:03
第2次从字符串The Adventures of Batwoman中搜索
根据匹配原则,Batman和都Batwoman符合要求,但字符串中 ...

谢谢
页: [1]
查看完整版本: 正则表达式的用法