我想替换字符串中所有超过2个白色空格,但不是新行,我有这个正则表达式:\s{2,},但它也匹配新行。如何匹配两个或更多的白色空格,而不是新行?我用C#
\s{2,}
cetgtptt1#
将您想要匹配的白色空格字符放在字符类中。举例来说:
[ \t]{2,}
匹配两个或多个空格或制表符。您还可以:
[^\S\r\n]{2,}
它至少两次匹配除\r和\n之外的任何空白字符(注意,\S中的大写S是[^\s]的缩写)。
\r
\n
\S
S
[^\s]
yqkkidmi2#
正则表达式只针对两个空格:[ ]{2,}正则表达式中的括号是字符类。意思是里面只有字符。这里只有空间。下面的花括号表示两次或更多次。
1wnzp6jl3#
你的意思是 * 严格地超过 * 两个或 * 至少 * 两个?如果是前者,在量词中使用3。否则就停在两点。一种方法是使用德摩根定律:
[^\S\r\n]
把它读作“非空白、非回车、非换行符”,或者在解开双重否定之后,读作“空白但非回车、非换行符”。为了让我们的语法老师高兴,说你想要什么,而不是你不想要什么。
[\t\f\cK ]
它匹配制表符、换页符、垂直制表符或空格。这对于您的输入来说可能有些过分,
[\t ]
可能就够了更多详情,请参阅related answer from 2010。
3条答案
按热度按时间cetgtptt1#
将您想要匹配的白色空格字符放在字符类中。举例来说:
匹配两个或多个空格或制表符。
您还可以:
它至少两次匹配除
\r
和\n
之外的任何空白字符(注意,\S
中的大写S
是[^\s]
的缩写)。yqkkidmi2#
正则表达式只针对两个空格:[ ]{2,}正则表达式中的括号是字符类。意思是里面只有字符。这里只有空间。下面的花括号表示两次或更多次。
1wnzp6jl3#
你的意思是 * 严格地超过 * 两个或 * 至少 * 两个?如果是前者,在量词中使用3。否则就停在两点。
一种方法是使用德摩根定律:
把它读作“非空白、非回车、非换行符”,或者在解开双重否定之后,读作“空白但非回车、非换行符”。
为了让我们的语法老师高兴,说你想要什么,而不是你不想要什么。
它匹配制表符、换页符、垂直制表符或空格。这对于您的输入来说可能有些过分,
可能就够了
更多详情,请参阅related answer from 2010。