李万金 发表于 2022-6-28 07:43:55

正则表达式

import re
str = "123456789123456789 123456789123456"

matchObj = re.findall(r'\d{15}(\d{3})?', str)
print('str is: ', str)
print('matchObj is: ', matchObj)

\d{15}(\d{3})?我觉得应该至少有15个数字,问号代表有或无,整个式子匹配15或18个数字。
但结果如下所示,只匹配了三个数字
str is:123456789123456789 123456789123456
matchObj is:['789', '']

suchocolate 发表于 2022-6-28 07:43:56

import re

s = "123456789123456789 123456789123456"
r = re.findall(r'\d{15}(?:\d{3})?', s)
print(r)

suchocolate 发表于 2022-6-28 09:49:24

本帖最后由 suchocolate 于 2022-6-28 10:41 编辑

re 有无()的区别:https://blog.csdn.net/ningyanggege/article/details/105254241

xiaoji- 发表于 2022-6-28 10:07:27

最终输出结果只有三个数字是因为括号指定了输出信息了吧

sls111 发表于 2022-6-28 10:31:46

不大明白什么意思~{:10_256:}{:10_256:}{:10_256:}你如果加上括号呢r'(\d{15})(\d{3})?' 他可以匹配到15位字符串和15+3位字符串

nikezhi 发表于 2022-6-28 11:36:35

因为你括号就括了3个啊,前一帖不是给你说过了

wangxaio 发表于 2022-6-28 16:18:52

re.findall()   添加了() 就只返回()内匹配的字符,去了()就好了

李万金 发表于 2022-6-28 17:37:49

nikezhi 发表于 2022-6-28 11:36
因为你括号就括了3个啊,前一帖不是给你说过了

抱歉,意思没有表达明确。问题已经解决了,谢谢!

李万金 发表于 2022-6-28 17:38:26

wangxaio 发表于 2022-6-28 16:18
re.findall()   添加了() 就只返回()内匹配的字符,去了()就好了

谢谢提醒,但没有得到预期结果

李万金 发表于 2022-6-28 17:40:11

sls111 发表于 2022-6-28 10:31
不大明白什么意思~你如果加上括号呢r'(\d{15})(\d{3})?' 他可以匹配到15位 ...

感谢帮助,但没有满足预期

李万金 发表于 2022-6-28 17:41:55

suchocolate 发表于 2022-6-28 09:49
re 有无()的区别:https://blog.csdn.net/ningyanggege/article/details/105254241

感谢你的帮助!{:7_146:}
页: [1]
查看完整版本: 正则表达式