代码之家  ›  专栏  ›  技术社区  ›  Neel

将正则表达式中的匹配项合并到单个列表中

  •  -1
  • Neel  · 技术社区  · 2 年前

    我正在尝试将CamelCase中的一个字符串分隔为一个列表

    我设法用正则表达式把单词分开

    但我不知道如何创建所有匹配项的单一列表

    我试图连接列表,添加类似的内容,但我认为这对我的情况不起作用

    n="SafaNeelHelloAByeSafaJasleen"
    patt=re.compile(r'([A-Z][a-z]*|[a-z$])')
    matches=patt.finditer(n)
    for match in matches:
        a=match.group()
        list=a.split()
        print(list)
    

    输出:

    ['Safa']
    
    ['Neel']
    
    ['Hello']
    
    ['A']
    
    ['Bye']
    
    ['Safa']
    
    ['Jasleen']
    

    所需输出:

    ['Safa','Neel','Hello','A','Bye','Safa','Jasleen']
    
    2 回复  |  直到 2 年前
        1
  •  0
  •   ddejohn    2 年前

    你在寻找 re.findall() re.finditer() :

    >>> string = "SafaNeelHelloAByeSafaJasleen"
    >>> pattern = re.compile(r"([A-Z][a-z]*|[a-z$])")
    >>> pattern.findall(string)
    ['Safa', 'Neel', 'Hello', 'A', 'Bye', 'Safa', 'Jasleen']
    
        2
  •  0
  •   Ash Nazg    2 年前

    您可以将匹配项附加到新列表:

    new_list=[]
    for match in matches:
        a=match.group()
        new_list.append(a)
    

    new\u列表的输出:

    ['Safa', 'Neel', 'Hello', 'A', 'Bye', 'Safa', 'Jasleen']