有谁能提供更好的解决方案吗?从右向左正则表达式。使用python
首先,独立日快乐!对于那些申请者 我正在分析一个从头算图,为此,我需要获得组件的名称,开发人员用来描述它的功能的名称,我可以从下面的行中提取有谁能提供更好的解决方案吗?从右向左正则表达式。使用python,python,regex,ab-initio,Python,Regex,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|}}}' 我试图使用正则表达式提取组件的名称,它是:RFMT:Gener
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|}}}'
我试图使用正则表达式提取组件的名称,它是:RFMT:Generate Labels Header
问题来了:
我的分隔符是从头算软件,这意味着我需要从右到左使用正则表达式。
有没有办法用Python来完成这个任务
我想出的最有效的解决办法是扭转一切
name = line[::-1]
name = re.search('erawtfoS oitinI bA\|(.*?)\|', name, re.IGNORECASE).group(1)
name = name[::-1]
我只想让它更高效,因为它将用于数百个图形,而且这些文件中的大多数都相当大。您可以只匹配非
字符,并使用它来确保它是从头开始之前的元素…
:
re.search(r'(?<=[|])[^|]*(?=[|]Ab Initio Software)', name, re.IGNORECASE).group()
哇,所以我真的需要更多地了解正则表达式。非常感谢。@kar对于我链接了lookarounds一节的教程,如果你想提高你的正则表达式技能,它绝对值得一读。如果你的组件名称至少包含一个字母,这个正则表达式可以工作:[^ |]*[a-zA-Z]+[^ |]*
re.search(r'[|]([^|]*)[|]Ab Initio Software', name, re.IGNORECASE).group(1)