如何在正向后方使用条件括号?

问题描述 投票:-1回答:2

我确实有一些要使用python regex排序的vim函数名。

names = [' function! s:Test2()',  '  function! Test()', ' function! s:WhateverName()', '   function! Test3()']

我只想匹配没有:s的函数的名称

为什么这个正则表达式不起作用?

import regex
sorted(names, key=lambda x: regex.findall("(?<=\s*function!\s*(s:)?).*(?=\()", x, regex.IGNORECASE))

输出:

[' function! s:WhateverName()', ' function! s:Test2()', '  function! Test()', '   function! Test3()']

预期输出:

['  function! Test()', ' function! s:Test2()', '   function! Test3()', ' function! s:WhateverName()']
python regex python-3.x sorting search
2个回答
0
投票

您可以通过捕获括号(\w+)\(\)之前的单词char来简化正则表达式来对此列表进行排序>

names = ['  function! Test()', ' function! s:Test2()', '   function! Test3()', ' function! s:WhateverName()']
import re as regex
names = sorted(names, key=lambda x: regex.findall("(\w+)\(\)", x, regex.IGNORECASE))
print(names)

输出

['  function! Test()', ' function! s:Test2()', '   function! Test3()', ' function! s:WhateverName()']

-2
投票

输出和输入是相同的,只是顺序不同。

© www.soinside.com 2019 - 2024. All rights reserved.