匹配空格但不匹配換行符我有時想要匹配空格而不是換行符。到目前為止,我一直在訴諸[ \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

躍然一笑
TA貢獻1826條經驗 獲得超6個贊
/[^\S\r\n]/
這個正則表達式比/[^\S\n]/
沒有更安全\r
。我的理由是Windows \r\n
用于換行,并使用Mac OS 9 \r
。如果\r
沒有\n
現在的話,你不可能找到它,但是如果你確實發現了它,除了新行之外它并不意味著什么。因此,既然\r
可以表示換行符,我們也應該排除它。
- 3 回答
- 0 關注
- 2641 瀏覽
添加回答
舉報
0/150
提交
取消