新手问题 正则表达式,如何匹配所有的标点符号,但不匹配单词中间的单引号?

xhj6 · 2013年04月24日 · 最后由 xhj6 回复于 2013年04月24日 · 20928 次阅读

几十年以来,一直都对正则表达式一塌糊涂的,现在紧急求助:

如何过滤掉字符串中的所有标点符号,但不得过滤类似于 don’t 这种单词中间的单引号?

现在一点思路都没有,求指点,求提示,谢谢!

另,/\p{P}/ 为什么无法过滤掉 “”‘’ 这四个引号?

![“”‘’],是不是有这个,记不清,从来没记清楚过,看来不是编程的料啊。

@chenge Ruby 的正则表达式好像只能处理 ASCII 码,在表达式中直接写入非 ASCII 字符好像会被忽略的,好像是这样,不确定……

是不是可以先替换成英文的,再过滤呢

@chenge 晕死,“”‘’ 本来就是英文的,你确定知道我问题在哪儿吗?

我是要匹配所有的标点符号,包括中英文,但不匹配 don'tdon’t 中的 ',求高手指点。

@luikore 眼泪哗哗的,万分感谢,这完全是手把手的教啊!我看我真应该下定决心来认真学下正则了,google 的时间成本已经比学习成本多多了

我没改代码,直接用 /[^-’[^\p{P}]]|’$|’”$/ 对付了,暂时能用,关键是您说的双重否定太重要了,完全是茅塞顿开啊

需要 登录 后方可回复, 如果你还没有账号请 注册新账号