0

私は RegEx を使用しており、文字列内の ' (アポストロフィ) を無視したいと考えています。RegEx の議論は、議論の中で見つけることができます。 文字列操作: 文字列を特定のパターンに置き換える方法

RegEx: \\(\\s*'(?<text>[^'']*)'\\s*,\\s*(?<pname>[\\w\\[\\]]+)\\s*\\)

基本的に、提供されている RegEx は、{text} に ' (アポストロフィ) が含まれているシナリオでは機能しません。{text} 内のアポストロフィを無視する正規表現を使用できますか?

For eg: 

substringof('B's',Name) should be replaced by Name.Contains("B's") 
substringof('B'',Name) should be replaced by Name.Contains("B'")
substringof('''',Name) should be replaced by Name.Contains("'")

感謝します!!ありがとうございました。

4

1 に答える 1

1

ケースの扱いが難しそう''''です。これが、問題を解決するためにデリゲートと別の置換を使用することを選択した理由です。

static void Main(string[] args)
{
    var subjects = new string[] {"substringof('xxxx',Name)", "substringof('B's',Name)", "substringof('B'',Name)", "substringof('''',Name)"};

    Regex reg = new Regex(@"substringof\('(.+?)'\s*,\s*([\w\[\]]+)\)");
    foreach (string subject in subjects) {
        string result = reg.Replace(subject, delegate(Match m) { return m.Groups[2].Value + ".Contains(\"" + m.Groups[1].Value.Replace("''", "'") + "\")"; });
        Console.WriteLine(result);
    }
}
于 2013-05-13T18:31:02.500 に答える