我有这行代码:
textBox1.Text = Regex.Replace(textBox1.Text, "(?:\r\n)+", " \r\n");
基本上在换行符之前为该行添加了一个双空格键:
输入:
a
b
c
d
e
输出:
a //<--- Double spacebar after the 'a' character
b //<--- Double spacebar after the 'b' character
c //<--- Double spacebar after the 'c' character
d //<--- Double spacebar after the 'd' character
e
对于像这样的页面或reddit的某些格式化目的,它需要前一行中的双断行或双空格键以及之后的单行换行以在其格式中创建一个新行
无论如何,这是有效的,但问题是如果你已经有一个双重空格键,它只是不断添加并导致一个行太多的空格键,这是不必要的,因为你只需要2来工作
所以我尝试用[^]做一个异常,如果它之前已经有一个双空格键,则不应该考虑该规则,如下所示:
(?:[^ ]\r\n)+
但它不起作用?
输入:
a
b
c //<---- Double spacebar before the line break to check if it ignores it
d
e
输出:
//&lt; ---双空格键在这里??
//&lt; ---空白行,没有任何内容
//&lt; ---双空格键在这里??
c //&lt; ---这里是双空格键??
//&lt; ---双空格键在这里??
ë
为什么呢?怎么了?非常感谢你
答案 0 :(得分:3)
正确的正则表达式:(?: )?\r\n
需要考虑的一些要点:
(?:(?: )?\r\n)+
[ ]
与[ ]
相同,这意味着&#34;匹配空格或空格或空格......&#34;。