Regex 如何从两个字符串之间获取字符串
我目前正在尝试获取介于两个子字符串之间的字符串。在本例中,我需要处理的字符串是一个代码块。不确定是正则表达式还是搜索函数,但我一直没有得到任何回复,我不应该这样做。我需要得到第53行的偏移量,但我需要使用角撑板来支撑左侧的Gus 1作为起始标记,ENDFOR可能是结束标记。只是不太确定这样的语法在python中如何工作。我已经尝试了一些我在网上看到的例子,但到目前为止运气不佳。任何帮助都将不胜感激。此外,我还希望使用compile实现,因为偏移量可以被多次访问Regex 如何从两个字符串之间获取字符串,regex,python-3.x,string,text,Regex,Python 3.x,String,Text,我目前正在尝试获取介于两个子字符串之间的字符串。在本例中,我需要处理的字符串是一个代码块。不确定是正则表达式还是搜索函数,但我一直没有得到任何回复,我不应该这样做。我需要得到第53行的偏移量,但我需要使用角撑板来支撑左侧的Gus 1作为起始标记,ENDFOR可能是结束标记。只是不太确定这样的语法在python中如何工作。我已经尝试了一些我在网上看到的例子,但到目前为止运气不佳。任何帮助都将不胜感激。此外,我还希望使用compile实现,因为偏移量可以被多次访问 s = '''!GUSSET TO
s = '''!GUSSET TO BACKPLATE LEFT GUS 1 ;
45: E_NO(8) ;
46: FOR R[191:COUNTER B]=1 TO R[199:CHANNELS] ;
47: ;
48: CALL CHAN_BP_TO_GR ;
49: ;
50: PR[GP1:2,1:OFFSET]=PR[GP1:2,1:OFFSET]-R[197:X OFFSET MM] ;
51: --eg:THESE OFFSETS ONLY APPLY TO THIS BLOCK AND INCREASE THE AMOUNT GIVEN
: EACH LOOP ;
52: !X OFFSET ;
53: PR[GP1:2,1:OFFSET]=PR[GP1:2,1:OFFSET]+21 ;
54: !Y OFFSET ;
55: PR[GP1:2,2:OFFSET]=PR[GP1:2,2:OFFSET]+0 ;
56: !Z OFFSET ;
57: PR[GP1:2,3:OFFSET]=PR[GP1:2,3:OFFSET]+0 ;
58: ENDFOR ;'''
string1 = re.compile('!GUSSET TO BACKPLATE LEFT GUS 1 ;')
string2 = re.compile('PR[GP1:2,1:OFFSET]=PR[GP1:2,1:OFFSET]+[0-9]* ;')
string3 = re.compile('ENDFOR ;')
result = re.search(r'!GUSSET TO BACKPLATE LEFT GUS 1 ;, (PR[GP1:2,1:OFFSET]=PR[GP1:2,1:OFFSET]+[0-9]* ;),ENDFOR ;', s)
'.(PR[GP1:2,1:OFFSET]=PR[GP1:2,1:OFFSET]+[0-9]* ;'
print(result)
由于文本是多行的,因此需要re.M标志 使用。要匹配换行符,还需要re.DOTALL标志 !!角撑板。*PR[GP1:2,1:OFFSET]=将匹配第53行上偏移的所有文本,然后匹配任何不是空格或空格的文本;并保存由result.group(1)返回的结果,如下所示 (?!ENDFOR)。ENDFOR。将匹配任何非ENDFOR后跟ENDFOR的内容 这将防止它过于贪婪,并将匹配限制在此特定部分,而不是跨越多个ENDFOR 试一试 这会回来的
PR[GP1:2,1:OFFSET]+21
如果所讨论的字符串也在文本文件中,则此多行规则是否成立?文本文件就是文本。如果文本文件有换行符[],并且您希望跨多行进行搜索,那么您需要多行标志和dotall标志。在我看来,在文件中查找它时,它总是返回一个none值。但是,当使用您在字符串中提供的直接放入程序的代码时,它可以正常工作。我正确访问该文件也是因为没有读写问题。使用其他正则表达式,我可以访问某些内容。只是似乎无法找到字符串之间的字符串。NVD。当我试图循环浏览文件文本时,它不起作用。但它现在起作用了,出了什么问题?
PR[GP1:2,1:OFFSET]+21