代码之家  ›  专栏  ›  技术社区  ›  Node.JS

两个连续空格字符前面的正则表达式负前视

  •  0
  • Node.JS  · 技术社区  · 7 年前

    我正试图使用下面的正则表达式捕获此字符串。我很难区分“ISO国家符号”和“ISO国家符号”。从本质上讲,我想捕捉“2”,“ISO国家符号”和“ISO国家符号”。此外,捕捉“ISO_country_symbol”的组从不包含任何空格。

    我很感激你的暗示

    正则表达式:

    (\#)\s+(\d+)\s+([\w\s]+(?!\s{2,}))\s+(\w+)\s+\w+
    

    字符串:

    #  2 ISO Country Symbol                ISO_country_symbol             S   3  0
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   CertainPerformance    7 年前

    与其重复一个前景消极的小组,可能更容易重复 懒洋洋的 并要求该组后面至少有两个空格。也就是说,只匹配 ISO Country Symbol ,你可以使用

    (\w[\w\s]+?\w)\s{2,}
    

    全图案:

    (\#)\s+(\d+)\s+(\w[\w\s]+?\w)\s{2,}(\w+)\s+\w+
    

    https://regex101.com/r/MDUI3B/1

        2
  •  0
  •   Mark Tolonen    7 年前

    使用非贪心匹配,并在其后至少需要两个空格。

    示例(Python):

    >>> s = '#  2 ISO Country Symbol                ISO_country_symbol             S   3  0'
    >>> import re
    >>> re.match(r'#\s+(\d+)\s+([\w\s]+?)\s{2,}(\w+)',s).groups()
    ('2', 'ISO Country Symbol', 'ISO_country_symbol')