gpt4 book ai didi

c# - 捕获组减法/取反

转载 作者:太空宇宙 更新时间:2023-11-03 21:15:52 26 4
gpt4 key购买 nike

我似乎无法减去或否定捕获的组。鉴于这些字符串示例:

  • “aa”
  • “ab”

和正则表达式:@"([a-z])[^\1]"@"([a-z])[\w-[\1]]"我希望第一个匹配失败,第二个匹配成功,但在这两种情况下都成功了。我面临着稍微复杂一点的正则表达式,但我将它简化到了这个级别。在方括号中引用捕获组的语法是否不同?

编辑:不幸的是,我错误地认为这个简化版本将适用于真实版本。在这里。

假设字符串:

  1. “abcdf”
  2. “aabb”
  3. “aacbb”
  4. “啊啊啊”

和正则表达式:@"([a-z])\1.*?(?!(\1))\2"

我希望 2. 和 3. 是正确的。 4 应该是假的,因为 "aa"== "aa"

最佳答案

在字符类 [] 中,正则表达式解释器遵循不同的规则。想想为破折号保留的特殊处理 - 用于制作字符范围(即 [a-z])。

所以里面的\1被当作ASCII码1[^\1]的意思是:每一个不是ascii 控制字符 1(标题开始)。

更新

对于您的编辑,您已经完成了,请尝试这个正则表达式(我认为您不需要在点部分 .*? 中使用惰性修饰符):

@"^([a-z])\1.*((?!\1)[a-z])\2$"

Online demo

传奇

^              # match start of the string
([a-z]) # Capturing Group 1 (\1): a single lowercase letter
\1 # the same char of \1 again
.* # any char zero or more times
((?!\1)[a-z]) # Capturing Group 2 (\2): a lowercase letter that is not equal to \1
\2 # the same char of \2 again
$

关于c# - 捕获组减法/取反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34335581/

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