正则表达式 - 字符 class 减法

regex - character class subtraction

我想匹配空格和除 . 之外的任何标点符号。

我正在尝试这个: ([^\pP-[\.]\pZ])

但是没有用。我需要使用捕获组。

字符 class 减法不是 PCRE 功能(PHP 正则表达式风格)。

您可以改为这样写:([^\PP.]|\s) (添加 u 修饰符以将 \s 字符 class 扩展到所有 unicode white-空格并将字符串读取为 UTF8)

想法是使用一种双重否定来排除点。 \PP 是所有不是标点符号的字符。 [^\PP]匹配所有标点字符(如\pP)但是这次你可以使用字符class否定[^...]来排除你想要的。

这会让你得到空格和所有 symbols/punctuation。

[^.\w]

http://regexr.com/3bddt

^用于排除后面的字符。所以 [^.\w] 说 exclude 。和所有单词字符,只留下符号和标点符号