所以在结束时(经过几天的调试)我发现了一个问题。它根本不在正则表达式中:/。它接缝我用
修剪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"
创建文本时,它会在标点匹配中进行分组:" "," "
- 换句话说,空格和空格......我不知道为什么?
答案 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