正则表达式匹配一个带有前缀的字符串,然后区分大小写,然后加上一个后缀

时间:2019-07-10 17:08:15

标签: regex .net-core

所以我需要不区分大小写地匹配一个字符串,该字符串具有文字前缀和后缀。

例如说我正在寻找以下内容

  • $ Close(#$ ScreenName:“系统A确认弹出窗口”)
  • $ Close(#$ ScreenName:“系统A警报弹出窗口”)
  • $ Close(#$ ScreenName:“系统A菜单”)

前缀$Close(#$ScreenName: "将始终相同,而后缀")将始终相同。但是,引号内的内容将不存在,我想区分大小写地匹配它。

因此,如果我告诉它查找“系统A确认弹出窗口”,它将与之匹配

$Close(#$ScreenName: "System A Acknowledgement Popup")

$Close(#$ScreenName: "system a acknowledgement popup")

这是我的代码。我正在尝试获取比赛计数,然后替换比赛。

static string FixScreenCallsInFile(string FileContents, List<string> screenNamesToFindAndFix)
{

    foreach (var screenName in screenNamesToFindAndFix)
    {
        var ScreenNameHelper = (Old: $"$Close(#$ScreenName: \"{screenName}\")", New: $"$Close(\"{screenName}\")", OldSearchPattern: Regex.Escape($"$Close(#$ScreenName: \"{screenName}\")"));

        var CountMatch = Regex.Matches(FileContents, ScreenNameHelper.OldSearchPattern).Count;
        if (CountMatch > 0)
        {
            Console.WriteLine($"\t\t{ScreenNameHelper.Old} count is {CountMatch} -> {ScreenNameHelper.New}");
            FileContents = Regex.Replace(FileContents, ScreenNameHelper.OldSearchPattern, ScreenNameHelper.New);
        }
    }

    return FileContents;
}

我的挂断是不区分大小写的屏幕名称部分。

1 个答案:

答案 0 :(得分:1)

如果要在字符串的任何位置更改“游戏规则”,则可以使用内联选项(?imnsx-imnsx)-关闭选项。

说,您需要匹配字符串ABCabc。然后模式ABC(?i)ABC将匹配此字符串。换句话说,首先,它将严格匹配ABC,但随后将对ABC的所有情况进行排列:abcaBcaBC等。< / p>