正则表达式非空字符\S与[^\s]区别

sh/bash/dash/ksh/zsh等Shell脚本
回复
shmily623
帖子: 64
注册时间: 2009-07-02 19:11

正则表达式非空字符\S与[^\s]区别

#1

帖子 shmily623 » 2011-04-29 1:41

\S=[^\f\n\r\t\v]是非空字符。
\s是所有的空字符,[^a-z]匹配任何不在指定范围内的任意字符,那么是不是可以推出
[^\s]表示所有的非空字符?
测试了一下,这样是不对的
那么[^\s]到底是个什么东西呢?
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 正则表达式非空字符\S与[^\s]区别

#2

帖子 fnan » 2011-04-29 3:35

[^\s]就是非s字符。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 正则表达式非空字符\S与[^\s]区别

#3

帖子 lilydjwg » 2011-04-29 11:37

shmily623 写了: 那么[^\s]到底是个什么东西呢?
你用的什么正则引擎?
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 正则表达式非空字符\S与[^\s]区别

#4

帖子 aerofox » 2011-04-30 9:21

在 gvim 中,输入一些乱七八糟的东西,有空格、数字、符号、TAB等,特别提一下,有字母 s,再用冒号命令:

代码: 全选

:set hlsearch
再用查找命令分别查找 \S 和 [^\s],你就看到差别了。
头像
sevk
帖子: 2060
注册时间: 2007-05-08 16:26
系统: arch
来自: 火星内核某分子内某原子核内
联系:

Re: 正则表达式非空字符\S与[^\s]区别

#5

帖子 sevk » 2011-04-30 9:38

没有任何区别。写法不一样而已。
就像
/a+/ 和 /a{1,}/

/a*/ 和 /a{0,}/
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 正则表达式非空字符\S与[^\s]区别

#6

帖子 lilydjwg » 2011-04-30 13:08

aerofox 写了:在 gvim 中,输入一些乱七八糟的东西,有空格、数字、符号、TAB等,特别提一下,有字母 s,再用冒号命令:
[...]
再用查找命令分别查找 \S 和 [^\s],你就看到差别了。
Vim 不支持在 [] 中使用 \s 这种东西的。不过其它一些 pcre-like 的正则一般都支持。好像 POSIX 的也不支持吧。
wk8910
帖子: 90
注册时间: 2009-08-07 9:28

Re: 正则表达式非空字符\S与[^\s]区别

#7

帖子 wk8910 » 2011-05-02 22:35

在perl里面,后者是空格在开头
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 正则表达式非空字符\S与[^\s]区别

#8

帖子 eexpress » 2011-05-03 9:29

这没必要讨论,环境不同,可能不同的。
● 鸣学
回复