作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看过并读过几篇关于否定匹配的文章,即使用“非”运算符,但我正在寻找稍微不同的东西。我想匹配和替换,但使用“反向选择”。
我会用一个比喻来解释:
想想文字处理文档。当您使用“搜索和替换”时,您可以在某些软件中突出显示文档中的所有匹配项。使用正则表达式,这当然是匹配,我可以用我喜欢的任何东西替换它们。但是,如果我想用一些短语替换其他所有内容 怎么办。
假设我有一个允许的单词列表,为了简单起见,现在只包含一个单词“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/
我是一名优秀的程序员,十分优秀!