代码之家  ›  专栏  ›  技术社区  ›  Baktaawar David Maust

提取具有设置的连字符数的字符串

  •  0
  • Baktaawar David Maust  · 技术社区  · 6 年前

    如果我有一个示例字符串,如下所示:

    LEARNING-LEARNING-LEARNING-LEARNING-LEARNING-COMPANY_ORG_CHART-LEARNING-LEARNING-LEARNING-END
    

    我只想提取步骤的第一个n,其中n由中间的连字符数定义。

    So if n=5, 
    

    我只想要前五步。

    输出:

    LEARNING-LEARNING-LEARNING-LEARNING-LEARNING
    

    我试过这个:

    s1=re.search(r'([A-za-z_].*-{0,5}[A-za-z_].*?)',s)
    print(s1.group())
    

    但它将整个字符串作为输出。

    LEARNING-LEARNING-LEARNING-LEARNING-LEARNING-COMPANY_ORG_CHART-LEARNING-LEARNING-LEARNING-END
    In [ ]:
    
    2 回复  |  直到 6 年前
        1
  •  6
  •   G. Anderson    6 年前

    如果这是实际的格式,那么对于所提供的示例,regex可能会过多。另一种选择是使用字符串方法和索引:

    x='LEARNING-LEARNING-LEARNING-LEARNING-LEARNING-COMPANY_ORG_CHART-LEARNING-LEARNING-LEARNING-END'
    
    print('-'.join(x.split('-')[:5]))
    
    'LEARNING-LEARNING-LEARNING-LEARNING-LEARNING'
    
        2
  •  0
  •   Josh Withee    6 年前

    试试看:

    s1 = re.search(r'^([A-za-z_]+-){0,4}[A-za-z_]+',s)
    print(s1)
    

    (本例为n=5)