Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有谁能提供更好的解决方案吗?从右向左正则表达式。使用python_Python_Regex_Ab Initio - Fatal编程技术网

有谁能提供更好的解决方案吗?从右向左正则表达式。使用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)