有人能提供更好的解决方案吗?从右到左正则表达式.使用python



首先,独立日快乐!对于那些申请者!

我正在分析Ab Initio图,为此,我需要获得组件的名称,即开发人员用来描述其功能的名称,我可以从下面的行中提取。

name ='}}@0|@207000|80000|227000|100000|152000|126000|11654|RFMT: Generate Labels Header|Ab Initio Software|Built-in|1|100|0||6||32769|1|{1|0|}}}'

我尝试使用regex来提取组件的名称,即:RFMT:Generate Labels Header

问题来了:

我的分隔符是|Ab Initio Software,这意味着我需要从右到左使用正则表达式。有没有任何方法可以使用Python来实现这一点。

我想出的最有效的解决方案是颠倒一切。

name = line[::-1]
name = re.search('erawtfoS oitinI bA|(.*?)|', name, re.IGNORECASE).group(1)
name = name[::-1]

我只想让它更高效,因为它将用于数百张图,其中大多数文件都很大。

您可以只匹配非|字符,并使用查找来确保它是Ab Initio...:之前的元素

re.search(r'(?<=[|])[^|]*(?=[|]Ab Initio Software)', name, re.IGNORECASE).group()

即使没有前瞻性,如果只将(.*?)更改为更明确的[^|]*,也会得到正确的结果。但贪婪的前瞻性解决方案可能更有效。不管怎样,它在这里:

re.search(r'[|]([^|]*)[|]Ab Initio Software', name, re.IGNORECASE).group(1)

相关内容

  • 没有找到相关文章

最新更新