gpt4 book ai didi

c# - 反转或反转正则表达式匹配

转载 作者:行者123 更新时间:2023-11-30 16:02:12 24 4
gpt4 key购买 nike

我看过并读过几篇关于否定匹配的文章,即使用“非”运算符,但我正在寻找稍微不同的东西。我想匹配和替换,但使用“反向选择”。

我会用一个比喻来解释:

想想文字处理文档。当您使用“搜索和替换”时,您可以在某些软件中突出显示文档中的所有匹配项。使用正则表达式,这当然是匹配,我可以用我喜欢的任何东西替换它们。但是,如果我想用一些短语替换其他所有内容 怎么办。

假设我有一个允许的单词列表,为了简单起见,现在只包含一个单词“and”(我很挑剔),我想用字符串“(审查)”。

如果输入是“我很友善,我喜欢穿忍者装”,那么输出应该是“(censored) and (censored) and (censored)”。

问题是一般性的,但我自己主要使用 C#,如果我要实现它,很可能会在 C# 中使用 Regex。

最佳答案

这是一个基于 Regex.Split 的简单方法具有以整个单词的捕获组为特征的模式 and :

var str = "I am nice and friendly and I like to wear ninja outfits";
var rx = new Regex(@"(\band\b)");
var res = rx.Split(str).Select(x => x == "and" ? x : // Keep "and"
!String.IsNullOrWhiteSpace(x) ? // If x is not null or empty
"<censured>" : "") // Replace with <censured>, else emtpy string
.ToList();
Console.WriteLine(string.Join("", res));

输出:<censured>and<censured>and<censured>

参见 IDEONE demo

关于c# - 反转或反转正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37857812/

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