gpt4 book ai didi

c# - 使用否定后视匹配字符串中的单词

转载 作者:行者123 更新时间:2023-11-30 23:00:17 25 4
gpt4 key购买 nike

我尝试使用带有负向后视的模式来获取不以 "un" 开头的单词。这是代码:

using Regexp = System.Text.RegularExpressions.Regex;
using RegexpOptions = System.Text.RegularExpressions.RegexOptions;

string quote = "Underground; round; unstable; unique; queue";
Regexp negativeViewBackward = new Regexp(@"(?<!un)\w+\b", RegexpOptions.IgnoreCase);
MatchCollection finds = negativeViewBackward.Matches(quote);

Console.WriteLine(String.Join(", ", finds));

它总是返回完整的单词集,但应该只返回round, queue

最佳答案

(?<!un)\w+\b首先匹配不以 un 开头的位置(负向后看),然后匹配 1 个或多个单词字符,后跟单词边界位置。

您需要在前导词边界之后使用负先行:

\b(?!un)\w+\b

参见 regex demo .

详情

  • \b - 前导词边界
  • (?!un) - 如果接下来的两个单词字符是 un,则匹配失败的否定前瞻
  • \w+ - 1+ 个单词字符
  • \b - 尾随单词边界。

C# demo :

string quote = "Underground; round; unstable; unique; queue";
Regex negativeViewBackward = new Regex(@"\b(?!un)\w+\b", RegexOptions.IgnoreCase);
List<string> result = negativeViewBackward.Matches(quote).Cast<Match>().Select(x => x.Value).ToList();
foreach (string s in result)
Console.WriteLine(s);

输出:

round
queue

关于c# - 使用否定后视匹配字符串中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51673814/

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