我保证我会检查其他问题,但我似乎无法找到适用于我的特定问题的内容。我试图匹配一个模式只有当它出现在某个其他子字符串之前,但是我试图匹配的模式和子字符串很多次出现在文件中。我试图用Python的re.findall()函数
来做这件事我有这个python代码和一个很长的文件来解析。我添加了一条评论来解释我尝试做什么以及在哪里,并希望我没有太模糊。
感谢任何形式的帮助。
names = re.findall('CSRN' + r':+([A-Z ]*)' + r'\+:*'
+ 'CGVN' + r':+([A-Z ]*)'
# + what's underneath only if it appears before an occurence of 'IRV',
# otherwise skip and try to find next pattern
+ 'STGN' + ':([0-9a-zA-Z]*)'
+ r'(?:OLD\+' + 'STGN' + ':([0-9a-zA-Z]*))?', text, re.DOTALL)
答案 0 :(得分:0)
这个正则表达式在每次出现IRV之前都会得到“最后一个”STGN号码,我认为这就是你所要求的。
STGN:([0-9A-F]+)(?=(?:[^S]|S(?!TGN))*IRV)
我不明白这与你想找的名字有什么关系,但也许这会对你有所帮助。
简要说明:
[0-9A-F]
找到十六进制数字,我认为您正在使用此处