gpt4 book ai didi

regex - 如何排除第一组的单个字符被匹配到第二组?

转载 作者:行者123 更新时间:2023-12-05 00:16:39 24 4
gpt4 key购买 nike

我想构建 q 正则表达式来匹配重复的单个字符的模式,然后是彼此。
例如,三个相同的字符“A”,然后是另一个字符“B”的两次。第二组的字符重复两次以上没有关系。
例如它应该匹配字符串 wuzDDDFFFxji

Full match  3-8 `DDDFF`
Group 1. 3-4 `D`
Group 2. 6-7 `F`

我想出了以下正则表达式,但有一个限制。
(.)\1{2}(.)\2{1}

它几乎可以工作,但不会排除第一组的字符在第二组中匹配。字符串 qwuiuQQQQQQsas 将匹配,因为:
Full match  5-10    `QQQQQ`
Group 1. 5-6 `Q`
Group 2. 8-9 `Q`

这与我想要的不匹配,但我找不到正确的语法来排除特定组与另一个组的匹配。我最近的尝试似乎不起作用
(.)\1{2}((?:\1))\2{1}


1st Capturing Group (.)
. matches any character (except for line terminators)
\1{2} matches the same text as most recently matched by the 1st capturing group
{2} Quantifier — Matches exactly 2 times
2nd Capturing Group ((?:\1))
Non-capturing group (?:\1)
\1 matches the same text as most recently matched by the 1st capturing group
\2{1} matches the same text as most recently matched by the 2nd capturing group
{1} Quantifier — Matches exactly one time (meaningless quantifier)

这里有什么提示吗?非常感谢!

最佳答案

避免匹配 qwuiuQQQQQsas您需要使用负前瞻而不是非捕获组:

(.)\1{2}((?!\1).)\2
^^^^^^

the regex demo .
(?!\1)负前瞻将“限制” .模式只匹配除第 1 组中匹配的字符以外的字符。

非捕获组不限制任何模式,但仅用于对仍然消耗文本的子模式进行分组,而前瞻(零宽度断言)不消耗文本,只检查字符串中是否存在与该模式相匹配的文本.

关于regex - 如何排除第一组的单个字符被匹配到第二组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41546687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com