匹配3个或多个大写字母以外的所有内容

问题描述 投票:-3回答:1

我需要处理一个脚本,该脚本基本上使用剪贴板并将其全部转换为小写,除非有三个或更多连续大写字母。

因此,我只需要正则表达式来匹配所有内容,所以我可以应用一个过程将其转换为小写。

例如,在句子中(这个例子很愚蠢,但是对于理解这个想法很有用):

如果PETER这么说,应该告诉那个人闭嘴,而不是Mary。 -NO NO NO!

正则表达式应匹配除“ SHUT”和“ PETER”部分以外的所有内容,即,其中一个或两个大写字母的部分,但当其中三个或更多时不匹配。

我一直在尝试不同的方法,但是都留下了字母。除找到三个连续的大写字母外,所有字符都应匹配。你能帮忙吗?

我的正则表达式是.NET 2.0-4.5。

.net regex expression
1个回答
0
投票

您可以尝试匹配否定大小写并将其从字符串中删除。类似于:

\b[A-Z]{3,}\b

以上正则表达式的解释:

[\b-表示单词边界。

[[A-Z]{3,}-表示匹配3次或更多次的大写字母。

您可以在here.中找到上述正则表达式演示>

pictorial representation

C#中的实现:

using System.IO;
using System;
using System.Text.RegularExpressions;


class Program
{
    static void Main()
    {
        String field = "The man should be told to SHUT up if PETER said so, not Mary. -NO NO NO!";
        String contents = Regex.Replace(field, @"\b[A-Z]{3,}\b", "");
        // Convert them to lower case here
        Console.WriteLine(contents);
    }

    // SHUT and PETER is replaced from the output string.
}

您可以找到上述实现here.的示例运行>

© www.soinside.com 2019 - 2024. All rights reserved.