[英]Python regular expression for substring
我要获取的是字符串的前3个数字字符:
st = '123_456'
import re
r = re.match('([0-9]{3})', st)
print r.groups()[0]
抓取前三个字符是否正确?
这将返回123
但是如果我想获得前3个字符而不管数字和字母或特殊字符怎么办?
当给12_345
,我要抢仅12_
谢谢,
如果您始终需要字符串中的前三个字符,则可以使用以下代码:
first_3_charaters = st[:3]
您的情况下不需要正则表达式。
如果所有数字都用_
分隔,那么您只需使用正则表达式即可贪婪地匹配第一个_
之前的所有数字字符。
r = re.match('([0-9]*)_', st)
实际上,此RE中的_
不是必需的,因此您可以将其简化为(这样就可以接受任何分隔符):
r = re.match('(\d*)', st)
但是,如果st = '1234_56'
则此解决方案将为您提供1234
。 我不确定这是否是您的意图。
因此,如果您最多需要3个数字字符 ,则可以将正则表达式修改为:
r = re.match('(\d{,3})', st)
您真的很亲密,只需删除多余的括号并使用零而不是一的正确索引即可。 Python索引从零开始。 见下文。
这有效:
import re
mystring = '123_456'
check = re.search('^[0-9]{3}', mystring)
if check:
print check.group(0)
^锚定到字符串的开头,这将确保仅与前三个数字匹配。 如果您不使用胡萝卜,则正则表达式将匹配字符串中连续三位数字。
某些人可能会建议\\ d,但其中包括0-9以上。
正如其他人肯定会指出的那样,如果所有字段都以要提取的三个数字开头,那么简单的子字符串操作就可以解决问题。
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.