繁体   English   中英

子字符串的Python正则表达式

[英]Python regular expression for substring

我要获取的是字符串的前3个数字字符:

st = '123_456'
import re
r = re.match('([0-9]{3})', st)
print r.groups()[0]
  1. 抓取前三个字符是否正确?

  2. 这将返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM