为了账号安全,请及时绑定邮箱和手机立即绑定

匹配空格但不匹配换行符

匹配空格但不匹配换行符

匹配空格但不匹配换行符我有时想要匹配空格而不是换行符。到目前为止,我一直在诉诸[ \t]。有一种不那么尴尬的方式吗?
查看完整描述

3 回答

?
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


查看完整回答
反对 回复 2019-08-09
?
跃然一笑

TA贡献1826条经验 获得超6个赞

/[^\S\r\n]/

这个正则表达式比/[^\S\n]/没有更安全\r。我的理由是Windows \r\n用于换行,并使用Mac OS 9 \r。如果\r没有\n现在的话,你不可能找到它,但是如果你确实发现了它,除了新行之外它并不意味着什么。因此,既然\r可以表示换行符,我们也应该排除它。


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 2596 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信