Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式正向查找+;消极前瞻_C#_Regex_Lookbehind_Negative Lookahead - Fatal编程技术网

C# 正则表达式正向查找+;消极前瞻

C# 正则表达式正向查找+;消极前瞻,c#,regex,lookbehind,negative-lookahead,C#,Regex,Lookbehind,Negative Lookahead,给定一个字符串“a B C a B B”我想匹配重复的单词(不管大小写)。预期结果将匹配“a”和“b”(a和b的最后一次出现)或“a”和“b”(第一次出现) 编辑:我只想匹配单词的第一个或最后一个匹配项 我知道通过拆分字符串并计算每个标记(降低大小写)可以更好地回答这个问题。 然而,我想尝试制定一个正则表达式来帮助我找到这些单词,只是为了练习 我的第一个atempt是:(?=\b(\w+)\b.*\b(\1)\b)(\1) 但是,它与第一个A、第一个B和第二个B(A B)匹配 我想用积极的向后看

给定一个字符串“a B C a B B”我想匹配重复的单词(不管大小写)。预期结果将匹配“a”和“b”(a和b的最后一次出现)或“a”和“b”(第一次出现)

编辑:我只想匹配单词的第一个或最后一个匹配项

我知道通过拆分字符串并计算每个标记(降低大小写)可以更好地回答这个问题。
然而,我想尝试制定一个正则表达式来帮助我找到这些单词,只是为了练习

我的第一个atempt是:
(?=\b(\w+)\b.*\b(\1)\b)(\1)

但是,它与第一个A、第一个B和第二个B(A B)匹配


我想用积极的向后看和消极的向前看来获取重复单词的最后一个实例:
(?有趣的谜题。以下是我的解决方案:

(\b\w+\b)(?:(?=.*?\b\1\b)|(?<=\b\1\b.*?\1))

现在的逻辑是:

  • 匹配一个单词:
    (\b\w+\b)
  • 确保它再次出现:
    (?=.*\b\1\b)
  • 并确保它以前没有发生:

    (与之前相同,但有一个负面的后视)


我只想匹配重复的单词一次。我编辑了问题。对不起。@nogod没问题,我已经扩展了answer@Lucas_Trezsniewski太好了!我一直在移动这些部件,不知道为什么我没有尝试简单的解决方案!
(\b\w+\b)(?=.*?\b\1\b)(?<!\b\1\b.*?\1)