regex在搜索中查找字符串或另一个字符串,然后返回被搜索的字符串的一部分



我有一个字符串,它是一个文件名,例如:

'20220213-0000-FSC-814-SC_VIRG_REFBAL_PRES_NPMINMAX-v1.xml'
'20220213-0000-F814-SC_VIRG_REFBAL_PRES_NPMINMAX-v1.xml'

我想找到一个具有search的字符串,对应于FdddFSC-ddd

我有一个这样的正则表达式:

type_match = re.search(r'(F(d{3}))|(FSC-(d{3}))', string)

之后,我发现例如FSC-814,我想从这个找到的字符串中只得到数字,我使用:

int(type_match.group(1))

,但它不工作后,我包括或声明在re.search

可以使用

F(?:SC)?-?(d{3})

参见regex演示。

细节:

  • F- andFchar
  • (?:SC)?-可选的SC字符序列
  • -?-可选连字符
  • (d{3})-捕获组1:三位。

查看Python演示:

import re
texts = ['20220213-0000-FSC-814-SC_VIRG_REFBAL_PRES_NPMINMAX-v1.xml',
'20220213-0000-F814-SC_VIRG_REFBAL_PRES_NPMINMAX-v1.xml']
pattern = r'F(?:SC)?-?(d{3})'
for text in texts:
match = re.search(pattern, text)
if match:
print (match.group(1))

输出:

814
814

最新更新