正则表达式匹配从开始到结束的连续字符

regex matching consecutive characters from start and end

我正在尝试匹配一个字符串,该字符串在行首包含三个连续的字符,在行尾包含六个相同的连续字符。 例如 CCC 我喜欢正则表达式 CCCCCC C 将从搜索中突出显示

我找到了一种使用这两个正则表达式代码找到前 3 个和后 6 个的方法,但我很难将它们组合起来 ^([0-9]|[aA-zZ]) and ([0-9]|[aA-zZ])$ 感谢任何帮助

如果您只想用一个正则表达式来“突出显示”前三个字符 最后六个字符,可以使用:

(?:^([0-9A-Za-z])(?=.*{6}$)|([0-9A-Za-z]){5}(?<=^{3}.*)$)

网上看一个demo


  • (?: - 打开 non-capture 组以允许交替;
    • ^([0-9A-Za-z])(?=.*{6}$) - Start-line 带有第一个捕获组的锚点,后跟两个指向同一组的反向引用。接下来是一个积极的前瞻,断言最后 6 个字符是相同的;
    • | - 或者;
    • ([0-9A-Za-z]){5}(?<=^{3}.*)$ - 另一种方法是将第二个捕获组与 5 个反向引用相匹配,然后是正后向(zero-width)以检查前三个字符是否相同。

现在,如果您不想对“突出显示”其他部分过于严格,只需使用捕获组即可:

^(([0-9A-Za-z])).*({6})$

在线查看demo。您现在可以在哪里引用捕获组 1 和 3。