我有一个像"SW: C000032345RE"
这样的字符串。我正在尝试提取下10个字母。
所以答案应该是"C000032345RE"
。我试图用两种不同的方法实现它
在SW:或SW:和RE之间的字母表后,Fist是接下来的10个字母。我正在使用以下脚本
import re
sub = "SW: C000032345RE"
a= re.search("^SW: (\w)", sub)
a.group(0)
当然它没有显示我想要的结果。每个帮助都很重要!
答案 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()