gpt4 book ai didi

c# - 删除所有不匹配的内容

转载 作者:行者123 更新时间:2023-11-30 21:31:13 25 4
gpt4 key购买 nike

string line = "Rok rok irrelevant text irrelevant;text.irrelevant,text"; 
string NewLine = Regex.Replace(line, @"\b[rR]\w*", "");

现在它用空格替换每个以 r/R 开头的单词,但我想将所有内容都设为空格,除了以 r/R 开头的单词。

最佳答案

编辑

您似乎只想提取rR 开头的单词,然后用空格将它们连接起来。在这种情况下,仅使用 \b[rR]\w* 正则表达式和以下代码:

var result = string.Join(" ", Regex.Matches(line, @"\b[rR]\w*").Cast<Match>().Select(x => x.Value));

参见 C# demo .

原始答案

您可以使用 negative lookahead在单词边界之后:

\b(?![rR])\w+
^^^^^^^^

请注意,+ 量词在这里更好,因为您要删除至少找到的 1 个字符。

或者,如果您还想删除找到的单词后的所有非单词字符,请使用

\b(?![rR])\w+\W*

参见 regex demo #1regex demo #2 .

如果要删除限定词前后的任何非词字符,请使用

var result = Regex.Replace(line, @"\W*\b(?![rR])\w+\W*", " ").Trim();

它将删除不以 rR 开头的单词之前和之后的所有非单词字符。

详情

  • \b - 单词边界
  • (?![rR]) - 如果在当前位置的右侧有 r,则匹配失败的否定前瞻>R
  • \w+ - 1+ 个单词字符
  • \W* - 0+ 个非单词字符。

关于c# - 删除所有不匹配的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53497649/

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