Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中的转义字符#_C#_Regex - Fatal编程技术网

C# c语言中的转义字符#

C# c语言中的转义字符#,c#,regex,C#,Regex,我在程序中卡住了转义序列 我用单引号从xml文件中获取输入 所以在字符串中,它可能包含任何转义序列 >我想做的是在转义字符作为正常字符后再考虑下一个字符。< /P> Example: '\abc\\t' Output: 'abc\t' 为此,我创建了正则表达式,它是: Regex.Replace(SearchString, @"\\?(?<Character>)", "${Character}"); 请帮我怎么做?试试这个: Regex.Replace(SearchStrin

我在程序中卡住了转义序列

我用单引号从xml文件中获取输入

所以在字符串中,它可能包含任何转义序列

<> >我想做的是在转义字符作为正常字符后再考虑下一个字符。< /P>
Example: '\abc\\t'
 Output: 'abc\t'
为此,我创建了正则表达式,它是:

Regex.Replace(SearchString, @"\\?(?<Character>)", "${Character}");
请帮我怎么做?

试试这个:

Regex.Replace(SearchString, @"\\(?<Character>[^\\])", "${Character}");
Regex.Replace(SearchString,@“\\(?[^\])”,“${Character}”);

基本上,您需要逐个字符解析字符串。伪代码:

Loop through all characters c:
    If c is escape character:
        Read next character and do something special (\t is tab, \\ is backslash, ...)
    Else:
        Copy character to output

正则表达式中的命名组不匹配任何内容,因此它的作用与替换(@“\”,“”)相同。

匹配组中的一个字符:

SearchString = Regex.Replace(SearchString, @"\\(.)", "$1");
如果您喜欢:

SearchString = SearchString.Replace(@"\\", @"\");
它将提供:

\abc\t
此处转义的
\t
现在被视为“制表符”


这就是你要找的吗?

为什么不把它变成一个文字/逐字的字符串,然后使用它呢?这是可行的,但它会用它自己而不仅仅是转义字符替换字符串中的每个字符。是的,我意识到了这个错误。现在编辑了我的文章。您不应该使用
[^\\]
匹配字符,因为这会阻止字符匹配\\,因此它将在\\t而不是\\中匹配\t。例如,尝试字符串
\abc\\\\t
,结果是
abc\\\\t
,而不是
abc\\t
。是的,通常您会这样做,但在这种情况下,OP不希望转义字符具有特殊意义。谢谢。它工作得很好,你能告诉我如何理解和创建正则表达式吗?我发现正则表达式很难构建,无法理解所有部分。你能告诉我我在表达式中犯的错误吗?它也会把转义的tab转换成“t”。示例@“\t\tint i;\r\n”将转换为@“ttint i;rn”@哈哈,这就是你要找的吗?@LOL:学习书写规则表达是一段漫长的旅程,而学习阅读规则表达则更漫长。。。毫不奇怪,你会发现它非常棘手。你应该能够找到一些教程,带你通过基本知识,然后你可以看看文件,以获得完整的图片。关于你的表情,有两个问题。您已经将反斜杠设置为可选,这意味着它还将匹配不以反斜杠开头的内容,并且您创建了一个只有名称但不匹配任何内容的组。
\abc\t