如何匹配所有标点但排除某一个

104 views
Skip to first unread message

Chump Ma

unread,
Dec 25, 2015, 3:54:35 AM12/25/15
to Vim.cn
例如

[[:punct:]]


能匹配所有英文标点,我现在想匹配所有英文标点,除了 "," 之外。

尝试在其它地方的正则表达式里可用的「双重否定」技巧无法实现,或者说我写的不对,求懂的人指点迷津。

我尝试过的写法:

[^,[^[:punct:]]]

Ryan Feng

unread,
Jun 6, 2016, 6:53:22 AM6/6/16
to Vim.cn
[^,:punct:] 会匹配除逗号(,)外所有的标点符号。

在 2015年12月25日星期五 UTC+13下午9:54:35,Chump Ma写道:

Chump Ma

unread,
Jun 6, 2016, 7:29:17 AM6/6/16
to Vim.cn
确实可以~非常感谢!

在 2016年6月6日星期一 UTC+8下午6:53:22,Ryan Feng写道:

Ryan Feng

unread,
Jun 6, 2016, 5:11:22 PM6/6/16
to Vim.cn
我又测试了一下,发现我给的答案是错误的,不好意思。
[^,:punct:] 实际上会匹配任何字符,除了(, : p u n c t)7个字符中的任何一个。

正确的答案是[^,[:alnum:]]。它匹配任何字符除了逗号,字符或数字。

在 2016年6月6日星期一 UTC+12下午11:29:17,Chump Ma写道:

Yongwei Wu

unread,
Jun 6, 2016, 10:19:45 PM6/6/16
to vim...@googlegroups.com
现在你把中文和中文标点都匹配了。

没好办法的话,不如老老实实写

[-[\]\\{}#%^*+=_|~<>.?!'"/:;()$&@]

Sent from my iPad
--
要退订此论坛,请发邮件至 vim-cn+un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛

---
您收到此邮件是因为您订阅了Google网上论坛上的“Vim.cn”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到vim-cn+un...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

Yongwei Wu

unread,
Jun 6, 2016, 10:35:49 PM6/6/16
to vim...@googlegroups.com
找到一个更好的写法:

,\@![[:punct:]]
--
Wu Yongwei
URL: http://wyw.dcweb.cn/

Chump Ma

unread,
Jun 7, 2016, 12:36:08 AM6/7/16
to Vim.cn
感觉应该是正解了!多谢~

在 2016年6月7日星期二 UTC+8上午10:35:49,Wu Yongwei写道:
找到一个更好的写法:

,\@![[:punct:]]

要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到vim-cn+unsubscribe@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

依云

unread,
Jun 7, 2016, 7:53:08 PM6/7/16
to vim...@googlegroups.com
> 匹配所有英文标点,除了 "," 之外

=> 匹配任意英文标点,并且它不是逗号

=> [^,]\&[[:punct:]]

参见 :h \&

当然你用断言的版本也很好。事实上那是我做排除时经常用手段。

On Mon, Jun 06, 2016 at 09:36:08PM -0700, Chump Ma wrote:
> 感觉应该是正解了!多谢~
>
> 在 2016年6月7日星期二 UTC+8上午10:35:49,Wu Yongwei写道:
> >
> > 找到一个更好的写法:
> >
> > ,\@![[:punct:]]


--
Best regards,
lilydjwg

Linux Vim Python 我的博客:
http://lilydjwg.is-programmer.com/
--
A: Because it obfuscates the reading.
Q: Why is top posting so bad?

Derek Tan

unread,
Sep 14, 2016, 1:34:56 AM9/14/16
to vim...@googlegroups.com
,\@![[:punct:]]
请问断言这样用法是何解啊?

顺便,今天发现vim8.0发布了,大家都知道了吗?不知道是不是我out了

2016-06-07 10:35 GMT+08:00 Yongwei Wu <wuyo...@gmail.com>:
找到一个更好的写法:

,\@![[:punct:]]

2016-06-07 10:19 GMT+08:00 Yongwei Wu <wuyo...@gmail.com>:
现在你把中文和中文标点都匹配了。

没好办法的话,不如老老实实写

[-[\]\\{}#%^*+=_|~<>.?!'"/:;()$&@]

Sent from my iPad

On Jun 7, 2016, at 05:11, Ryan Feng <ryan...@gmail.com> wrote:

我又测试了一下,发现我给的答案是错误的,不好意思。
[^,:punct:] 实际上会匹配任何字符,除了(, : p u n c t)7个字符中的任何一个。

正确的答案是[^,[:alnum:]]。它匹配任何字符除了逗号,字符或数字。

在 2016年6月6日星期一 UTC+12下午11:29:17,Chump Ma写道:
确实可以~非常感谢!

在 2016年6月6日星期一 UTC+8下午6:53:22,Ryan Feng写道:
[^,:punct:] 会匹配除逗号(,)外所有的标点符号。

在 2015年12月25日星期五 UTC+13下午9:54:35,Chump Ma写道:
例如

[[:punct:]]


能匹配所有英文标点,我现在想匹配所有英文标点,除了 "," 之外。

尝试在其它地方的正则表达式里可用的「双重否定」技巧无法实现,或者说我写的不对,求懂的人指点迷津。

我尝试过的写法:

[^,[^[:punct:]]]

--
要退订此论坛,请发邮件至 vim-cn+unsubscribe@googlegroups.com

更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛

---
您收到此邮件是因为您订阅了Google网上论坛上的“Vim.cn”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到vim-cn+unsubscribe@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout



--
Wu Yongwei
URL: http://wyw.dcweb.cn/

--
要退订此论坛,请发邮件至 vim-cn+unsubscribe@googlegroups.com

更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛

---
您收到此邮件是因为您订阅了Google网上论坛上的“Vim.cn”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到vim-cn+unsubscribe@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout



--
        DerekTan
        Mobile:13813597112
        tan...@gmail.com

Yongwei Wu

unread,
Sep 14, 2016, 5:17:05 AM9/14/16
to vim...@googlegroups.com
查看:

:help \@!

Vim 8.0本来就是上两天新发布的。Vim的英文邮件列表上宣布了的。
Yongwei Wu
URL: http://wyw.dcweb.cn/

Derek Tan

unread,
Sep 18, 2016, 1:25:52 AM9/18/16
to vim...@googlegroups.com
感谢Yongwei Wu,懂了。
Reply all
Reply to author
Forward
0 new messages