正则表达式无法识别“\ n”?

时间:2009-12-14 11:06:54

标签: c# regex

所以在结束时(经过几天的调试)我发现了一个问题。它根本不在正则表达式中:/。它接缝我用

修剪ekstra白色空间
intput= Regex.Replace(input, "\\s+", " ");

所以所有新行都替换为“”。笨!主持人,如果不需要请删除!

我有正则表达式来标记一些文本,它看起来像这样:

"(?<html>Ç)|
(?<number>\\d+(?:[.]\\d+)?(?=[][ \f\n\r\t\v!?.,():;\"'„Ç]|$))|
(?<other>(?:[^][Ç \f\n\r\t\v!?.,():;\"'„A-Za-zčćšđžČĆŠĐŽäöÖü][^ Ç\f\n\r\t\vA-Za-zčćšđžČĆŠĐŽäöÖü]*)?[^][ Ç\f\n\r\t\v!?.,():;\"'„A-Za-zčćšđžČĆŠĐŽäöÖü](?=[][!?.,():;\"'„]*(?:$|[ Ç\f\n\r\t\v])))|
(?<word>(?:[^][ Ç\f\n\r\t\v!?.,():;\"'„][^ Ç\f\n\r\t\v]*)?[^][ Ç\f\n\r\t\v!?.,():;\"'„])|
(?<punctuation>[][ \f\n\r\t\v!?.,():;\"'„])"

问题出在这一部分:(?<punctuation>[][ \f\n\r\t\v!?.,():;\"'„])。因此,当使用输入"\n\n"创建文本时,它会在标点匹配中进行分组:" "," " - 换句话说,空格和空格......我不知道为什么?

3 个答案:

答案 0 :(得分:5)

我可能错了,但你需要将String as String交给RegEx ...意味着你需要转义反斜杠。

... (?=[][ \\f\\n\\r\\t\\v!?.,():;\\" ...

否则C#将使用RegEx-Statement中的换行符替换\ n。

编辑:它也是possible to use literal strings,但需要标记为@(请参阅Martin的答案)。

答案 1 :(得分:2)

如果你在字符串前放置@,你可以使用单个反斜杠,并且可以识别换行符。

 @"(?<html>Ç)|

答案 2 :(得分:0)

设置RegexOptions.IgnorePatternWhiteSpace

更新

您确定[^]是否正确?除非它是某些角色组(我从未使用过),否则它将与.相同。同样适用于[]。也许我之前没有使用过所有的RE:p