[英]in python regex How to use * in lookahead assertion?
我有这两个字符串,
s='MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15||guiHelperMenu'
t='MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15|guiHelperMenu'
唯一的区别是|
和||
部分放在字符串末尾,如何用正则表达式||guiHelperMenu
|guiHelperMenu
或||guiHelperMenu
部分? 到目前为止,我已经尝试过
re.search('^.*(?=\|)',s).group()
'MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15|'
如何支持两个||
? 并在两种情况下都返回'MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15
?
编辑:发布此两分钟后,我想通了... http://rubular.com/r/zcFGLxzfcu
您可以将此正则表达式用于sub
:
>>> re.sub(r'\|+[^|]+$', '', s)
'MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15'
>>> re.sub(r'\|+[^|]+$', '', t)
'MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15'
或使用search
:
>>> re.search(r'.*?(?=\|+[^|]*$)', s).group()
'MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15'
>>> re.search(r'.*?(?=\|+[^|]*$)', t).group()
'MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15'
要获得最后一部分,可以使用捕获组,该捕获组将从两个输入中返回相同的字符串:
>>> re.search(r'\|([^|]+)$', s).group(1)
'guiHelperMenu'
>>> re.search(r'\|([^|]+)$', t).group(1)
'guiHelperMenu'
否则使用后置正则表达式:
>>> re.search(r'(?<=\|)[^|]+$', s).group()
'guiHelperMenu'
>>> re.search(r'(?<=\|)[^|]+$', t).group()
'guiHelperMenu'
如果您只想剥离guiHelperMenu
部分,那么您就可以这样做。 只需使用re.sub
:
>>> re.sub('\|+guiHelperMenu$', '', s)
'MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15'
>>> re.sub('\|+guiHelperMenu$', '', t)
'MayaWindow|toolBar2|MainShelfLayout|formLayout14|frameLayout4|formLayout15'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.