首页 > 解决方案 > 将'"'作为符号而不是语法

问题描述

目标:
使正则表达式代码在 C# 代码中工作

问题:
为了使正则表达式代码在 C# 中工作,我错过了什么语法。来自https://regexr.com/578ul的正则表达式代码有效,但不适用于 onelinegdb ( https://www.onlinegdb.com/HycbSKxAL )

我有一个符号'"',它是正则表达式代码的一部分,但 csharp 认为它是 c# 的一部分,而不是符号。


正则表达式

,["0x465a27d8333756e1:0x66460f22856aea3b","broadway 22, 123 45 ny",null,[null,null,55.0359401,13.9717872]
,0,1]

C# 代码

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"","broad.*]";
        string input = @",["0x465a27d8333756e1:0x66460f22856aea3b","broadway 22, 123 45 ny",null,[null,null,55.0359401,13.9717872]
,0,1]"


        foreach (Match m in Regex.Matches(input, pattern))
        {
            Console.WriteLine(m.Value);
        }
    }
}

正则表达式:
https ://regexr.com/578ul

Onlinegdb 与 C# 代码:
https ://www.onlinegdb.com/HycbSKxAL

谢谢!

标签: c#regex

解决方案


要在逐字字符串中转义"字符,您可以使用另一个字符,因此其中的每次出现都将被转换为单个字符:""""

var str = @""""; // string consisting of one "

因此,您的模式将如下所示:

string pattern = @""",""broad.*]";

并输入:

string input = @",[""0x465a27d8333756e1:0x66460f22856aea3b"",""broadway 22, 123 45 ny"",null,[null,null,55.0359401,13.9717872]
,0,1]";

\但在这种特殊情况下,使用简单的字符串转义似乎会更容易:

string pattern = "\",\"broad.*]";

推荐阅读