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