gpt4 book ai didi

c# - 使用正则表达式的异常问题

转载 作者:行者123 更新时间:2023-11-30 21:39:13 24 4
gpt4 key购买 nike

我有这行代码:

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 个空格键就可以工作

所以我尝试用 [^ ] 做一个异常(exception),如果它之前已经有一个双空格键,它不应该考虑规则,像这样:

(?:[^  ]\r\n)+

但它不起作用?

输入:

a

b
c //<---- Double spacebar before the line break to check if it ignores it
d

e

输出:

//<--- 这里是双空格键??

//<--- 空白行,什么都没有

//<--- 这里是双空格键??

c//<--- 此处双空格键??

//<--- 这里是双空格键??

e

为什么?怎么了?非常感谢

最佳答案

正确的正则表达式:(?: )?\r\n

需要考虑的几点:

  1. 如果您真的想将多个换行符“折叠”为一个作为原始正则表达式提示(使用 + 号),则将我的整个正则表达式用加号包裹在非捕获组中:(?:( ?: )?\r\n)+
  2. 是的,我的正则表达式将用完全相同的东西替换双空格换行符,但这没关系,而且比添加额外的空格更好,正如您提到的那样。
  3. 多次将相同的字符添加到字符类(使用 [brackets])没有任何意义。所以 [ ][ ] 相同,意思是“匹配一个空格或一个空格或一个空格...”。

关于c# - 使用正则表达式的异常问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45307224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com