我需要从字符串中提取一些数据,字符串就是这样的fixed-string-<number>-<string>
。 Fixed string
总是一样的,我需要取出数字及其字符串。
在python 3.5中,我正在使用下一个正则表达式
str = 'initial-string/fixed-string-124-jeff-thompson'
result = re.match('fixed-string-([0-9]*)-(.*)', str)
print (result)
但结果总是None
值,我检查了字符串并且它的格式很好。
我做错了什么?
更新
testing = 'first-string/fixed-string-123-jeff-thompson'
pattern = r'fixed-string-(\d+)-(.*)'
result = re.match(pattern, testing)
我对此进行了测试,代码仍然返回None
。
谢谢你。
答案 0 :(得分:2)
以下作品:
> s = 'fixed-string-345-abc'
> re.match(r'fixed-string-(\d+)-(.+)') # if num and string shouldn't be empty
# re.match(r'fixed-string-(\d*)-(.*)')
> m.group(1, 2)
('345', 'abc')
答案 1 :(得分:1)
答案 2 :(得分:1)
您正在使用re.match,它尝试匹配字符串开头(即第一个字符)的模式。 这里,“initial-string /”阻止它匹配。
您可以在模式中包含“initial-string /”,也可以使用re.search,它将匹配字符串中的任何位置。
请注意,使用原始字符串(r'my string with \ backslahes')也可以更好地避免在模式中出现转义的可能性。
string = 'initial-string/fixed-string-124-jeff-thompson'
result = re.search(r'fixed-string-([0-9]*)-(.*)', str)
result.groups()
# ('124', 'jeff-thompson')
或
result = re.match(r'initial-string/fixed-string-([0-9]*)-(.*)', str)
result.groups()
# ('124', 'jeff-thompson')