Python Regex:找到接下来的5个字母

时间:2017-05-18 06:59:51

标签: python regex string

我有一个像"SW: C000032345RE"这样的字符串。我正在尝试提取下10个字母。

所以答案应该是"C000032345RE"。我试图用两种不同的方法实现它

在SW:或SW:和RE之间的字母表后,Fist是接下来的10个字母。我正在使用以下脚本

import re 
sub = "SW: C000032345RE"
a= re.search("^SW: (\w)", sub)
a.group(0)

当然它没有显示我想要的结果。每个帮助都很重要!

6 个答案:

答案 0 :(得分:2)

不使用regex

的解决方案
In [84]: val = sub.find('SW: ')+len('SW: ')
In [85]: sub[val:val+10]
Out[85]: 'C000032345'

答案 1 :(得分:1)

当您要搜索其中10个(\w)时,您正在搜索单个字符(\w{10})。您还需要group(1)表示括号的内容,而不是整个匹配的group(0)

import re 
sub = "SW: C000032345RE"
a = re.search("^SW: (\w{10})", sub)
a.group(1)

你应该在调用方法之前检查a,因为正则表达式可能没有匹配! E.g。

>>> sub = "SW: C00003..."
>>> a = re.search("^SW: (\w{10})", sub)
>>> a.group(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

答案 2 :(得分:1)

你的SW:应该是一个积极的后瞻性断言(?<=),这样如果前面有匹配,你只捕获所需的数据!

>>> import re 
>>> sub = "SW: C000032345RE"
>>> a = re.search("(?<=SW: )\w{10}", sub)
>>> a.group(0)
'C000032345'

答案 3 :(得分:1)

TreeView1.SelectedNode.Text = TreeView1.SelectedNode.Text + " MAGIC!" 表示零个或多个空格,\s*表示10个单字字符:

\w{10}

答案 4 :(得分:1)

你应该使用简单的字符串切片,如

>>> sub = "SW: C000032345RE"
>>> sub[-12:]
'C000032345RE'
>>> sub[-12:-2]
'C000032345'
>>> 

答案 5 :(得分:0)

为什么你不能为此使用简单的字符串拆分?

sub = "SW: C000032345RE"
sub[4:]

或者你可以这样做:

sub.split(':')[1].strip()