分页: 2 / 2

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-03 13:47
pangding
原来 grep 还有 -P 这个参数。 :em06

那显然他就万能了。以后我看我都不用问这类问题了~~

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-03 13:55
lilydjwg
pangding 写了:原来 grep 还有 -P 这个参数。 :em06

那显然他就万能了。以后我看我都不用问这类问题了~~
正则替换还是得 perl 亲自出马的

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-03 16:41
pangding
lilydjwg 写了:
正则替换还是得 perl 亲自出马的

我在写 vim 的 ftplugin ,用来高亮一种文件类型的文本。所以必须用 vi 的正则。
当时发帖问这是觉得这个问题比较普通,不一定非要找会 vi 的人来问。

不过学了 grep -P 还是很管用,因为有的时候,经常感觉好多东西只用 ERE 说不清楚。能用 perl RE 就方便多了。

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-03 17:17
lilydjwg
pangding 写了:
我在写 vim 的 ftplugin ,用来高亮一种文件类型的文本。所以必须用 vi 的正则。
当时发帖问这是觉得这个问题比较普通,不一定非要找会 vi 的人来问。
[...]
原来如此,那怎么跑到 shell 版来了?到 Python/Perl/PHP 那个版不是更好?ERE 太弱了,而且容易写错(不知道要不要转义)。

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-03 19:29
pangding
刚来,还不是很熟悉论坛的地里状况。

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-03 23:10
fnan
ERE能存在不是吹出来的:
kose5@kose5-Aspire-4552:~$ cat a
cat dsf dsdf
df cat fgfg cat
cat
12cat
cat nm cat
cat bncat
ccat
asd dsf
kose5@kose5-Aspire-4552:~$ grep -no '.\bcat\b' a
2: cat
2: cat
3: cat
5: cat
kose5@kose5-Aspire-4552:~$

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-04 9:16
pangding
嗯。是也行。
但 ERE 的限制就比较多,比如你用的 \b,按理说肯定不是 BRE 里的东西。而且 POSIX 标准也没说 ERE 里要有。

另外,你的那个代码会高亮
dog=cat
中的 = 号。按理说是不应该高亮的。

不过如果高亮空格倒是可以授受,因为如果不加底纹,下划线之类的东西,高亮空格看不太出来。

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-04 10:55
lilydjwg
pangding 写了: 不过如果高亮空格倒是可以授受,因为如果不加底纹,下划线之类的东西,高亮空格看不太出来
你没见过高亮成鲜红色的空格吧?

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-04 18:35
pangding
是没见过。
那种是底色吧?同样的高亮效果用在一个普通的字符什么样?白底红字还是红底黑字?

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-04 20:55
lilydjwg
pangding 写了:是没见过。
那种是底色吧?同样的高亮效果用在一个普通的字符什么样?白底红字还是红底黑字?
不知道。我写 Python 时行尾的空格 Vim 就给高亮了。

PS: 用 Vim 看 whitespace 的代码不错。

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-05 11:33
pangding
lilydjwg 写了: 不知道。我写 Python 时行尾的空格 Vim 就给高亮了。

PS: 用 Vim 看 whitespace 的代码不错。
我这 python 默认是不高亮空格错误的。如果高亮的话,是高亮到 Error 上面去了。
你用

代码: 全选

:so $VIMRUNTIME/syntax/hitest.vim
可以显示所有激活的高亮设置。里面用 python 开头的,就是 python 用的。

Re: 正则表达式匹配行首的问题

发表于 : 2011-05-05 12:02
lilydjwg
pangding 写了:
lilydjwg 写了: 不知道。我写 Python 时行尾的空格 Vim 就给高亮了。

PS: 用 Vim 看 whitespace 的代码不错。
我这 python 默认是不高亮空格错误的。如果高亮的话,是高亮到 Error 上面去了。
你用

代码: 全选

:so $VIMRUNTIME/syntax/hitest.vim
可以显示所有激活的高亮设置。里面用 python 开头的,就是 python 用的。
好吧,我常用的配色的 Error 是红底的。。。