正则expression式:查找空格(制表符/空格),但不是换行符
我怎样才能有一个正则expression式testing空间或制表符,而不是换行符。 我试过了,但是发现它也testing了换行符。
我使用C#/ WPF,但它不应该。
使用字符类: [ \t]
试试这个字符集:
[ \t]
这只能匹配一个空格或制表符。
正如@EiríkrÚtlendi指出的那样,接受的解决scheme只考虑两个空格字符:水平制表符(U + 0009)和破坏空间(U + 0020)。 它不考虑其他空白字符,如不间断空格(恰好在我正在处理的文本中)。 维基百科上包含更完整的空白字符列表,并在链接的Perl答案中引用。 说明这些其他字符的简单C#解决scheme可以使用字符类减法来构build
[\s-[\r\n]]
或者,包括EiríkrÚtlendi的解决scheme,你会得到
[\s\u3000-[\r\n]]
注意:对于那些处理CJK文本(中文,日文和韩文)的人来说,双字节空间(Unicode \u3000
) 不包括在我迄今为止所尝试的任何实现中(Perl,.NET,PCRE,python)。 您需要首先对string进行规范化处理(例如,将\u3000
全部\u3000
为\u0020
),否则除了您要定位的任何其他空白之外,还必须使用包含此代码点的字符集,例如[ \t\u3000]
。
如果你使用Perl或者PCRE,你可以select使用\h
作为水平空格的简写,其中包括单字节空间,双字节空间和制表符等等。 请参阅匹配空格,但不要换行(Perl)线程以获取更多详细信息。
但是,这个简写还没有被.NET和C#实现,就像我已经知道的那样。