匹配空格但不匹配换行符我有时想要匹配空格而不是换行符。到目前为止,我一直在诉诸[ \t]。有一种不那么尴尬的方式吗?
3 回答
![?](http://img1.sycdn.imooc.com/5333a1920001d36402200220-100-100.jpg)
BIG阳
TA贡献1859条经验 获得超6个赞
Perl的版本5.10和更高版本支持子公司的垂直和水平的文字类,\v
和\h
,以及通用的空白字符类\s
最干净的解决方案是使用水平空白字符类\h
。这将匹配ASCII集中的制表符和空格,扩展ASCII中的不间断空格或任何这些Unicode字符
U+0009 CHARACTER TABULATION U+0020 SPACE U+00A0 NO-BREAK SPACE (not matched by \s) U+1680 OGHAM SPACE MARK U+2000 EN QUAD U+2001 EM QUAD U+2002 EN SPACE U+2003 EM SPACE U+2004 THREE-PER-EM SPACE U+2005 FOUR-PER-EM SPACE U+2006 SIX-PER-EM SPACE U+2007 FIGURE SPACE U+2008 PUNCTUATION SPACE U+2009 THIN SPACE U+200A HAIR SPACE U+202F NARROW NO-BREAK SPACE U+205F MEDIUM MATHEMATICAL SPACE U+3000 IDEOGRAPHIC SPACE
的垂直空间图案\v
是用处不大,但这些字符匹配
U+000A LINE FEED U+000B LINE TABULATION U+000C FORM FEED U+000D CARRIAGE RETURN U+0085 NEXT LINE (not matched by \s) U+2028 LINE SEPARATOR U+2029 PARAGRAPH SEPARATOR
有七个垂直空白字符匹配\v
,十八个水平字符匹配\h
。\s
匹配二十三个字符
所有空白字符都是垂直或水平没有重叠,但它们不是正确的子集,因为它们\h
也匹配U + 00A0 NO-BREAK SPACE,\v
也匹配U + 0085 NEXT LINE,两者都不匹配\s
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
跃然一笑
TA贡献1826条经验 获得超6个赞
/[^\S\r\n]/
这个正则表达式比/[^\S\n]/
没有更安全\r
。我的理由是Windows \r\n
用于换行,并使用Mac OS 9 \r
。如果\r
没有\n
现在的话,你不可能找到它,但是如果你确实发现了它,除了新行之外它并不意味着什么。因此,既然\r
可以表示换行符,我们也应该排除它。
- 3 回答
- 0 关注
- 2596 浏览
添加回答
举报
0/150
提交
取消