C#中的正则表达式(来自PHP的正则表达式)


Regular expression in C# (regex from PHP)

我有个小问题。我试图编写一个函数来提取C#中的某些内容(我必须将正则表达式从PHP转换为C#)。

我通常这样写:

public static class ExtensionMethods
{
  public String PregReplace(this String input, string[] pattern, string[] replacements)
  {
    for (var i = 0; i < pattern.Length; i++)
    {
        input = Regex.Replace(input, pattern[i], replacements[i]);
    }
    return input;
  }
}

但我对这些例子(PHP代码)有问题

preg_replace('@<head[^>]*?>.*?</head>@siu', ' ', $result);
preg_replace('@</?((frameset)|(frame)|(iframe))@iu', "'n'$0", $result);         

但是当我在C#中使用这个regulatx表达式时

String[] pattern = new String[2]{"@<head[^>]*?>.*?</head>@siu", "@</?((frameset)|(frame)|(iframe))@iu"};
String[] replace = new String[2]{" ", "'n'$0"};
input.PregReplace(pattern , replace );  //my new function

我在输入方面没有任何差异(我没有捕捉到正则表达式)。你能帮我做功能吗?正则表达式中有错误吗?

编辑:我将代码更改为:

String[] pattern = new String[2]{"<head[^>]*?>.*?</head>", "</?((frameset)|(frame)|(iframe))"};
String[] replace = new String[2]{" ", "'n''$0"};
input = "input = "><head><title>something</title></head><body>sdegsehgaeg<frame>aggsd</frame></";
string s = input.PregReplace(pattern, replace);

在回答中,我得到

> <body>sdegsehgaeg
'<frame>aggsd
'</frame></

它是

> <body>sdegsehgaeg'n''<frame>aggsd'n''</frame></

这对于''n''$0来说只是太多的字符。如果我将''n''$0更改为''n''$0,我会得到错误(识别的转义序列)

好的,我解决了问题($0)

谢谢你的帮助。

删除代码中的@,以及最后一个@之后的siuiu。在php中,您需要这些修饰符,在C#中,如果需要,您可以调用一些RegexOptions