regex 正则表达式匹配2个以上的白色空格,但不匹配新行

qjp7pelc  于 2023-10-22  发布在  其他
关注(0)|答案(3)|浏览(163)

我想替换字符串中所有超过2个白色空格,但不是新行,我有这个正则表达式:\s{2,},但它也匹配新行。
如何匹配两个或更多的白色空格,而不是新行?
我用C#

cetgtptt

cetgtptt1#

将您想要匹配的白色空格字符放在字符类中。举例来说:

[ \t]{2,}

匹配两个或多个空格或制表符。
您还可以:

[^\S\r\n]{2,}

它至少两次匹配除\r\n之外的任何空白字符(注意,\S中的大写S[^\s]的缩写)。

yqkkidmi

yqkkidmi2#

正则表达式只针对两个空格:[ ]{2,}正则表达式中的括号是字符类。意思是里面只有字符。这里只有空间。下面的花括号表示两次或更多次。

1wnzp6jl

1wnzp6jl3#

你的意思是 * 严格地超过 * 两个或 * 至少 * 两个?如果是前者,在量词中使用3。否则就停在两点。
一种方法是使用德摩根定律:

[^\S\r\n]

把它读作“非空白、非回车、非换行符”,或者在解开双重否定之后,读作“空白但非回车、非换行符”。
为了让我们的语法老师高兴,说你想要什么,而不是你不想要什么。

[\t\f\cK ]

它匹配制表符、换页符、垂直制表符或空格。这对于您的输入来说可能有些过分,

[\t ]

可能就够了
更多详情,请参阅related answer from 2010

相关问题