正则表达式匹配除十进制数字之外的标点符号

时间:2018-04-05 17:35:58

标签: regex regex-negation

我想编写一个正则表达式,找到所有标点字符(定义为不是字母数字或空格的任何字符),但不计算十进制数字的点数。

所以,例如,给出句子:

  

是x + 0.89 = y * 13.098?!?

我想要的是

  

['+','=','*','?','!','?']

有谁知道怎么做?已经有两天我一直在尝试所有可能的方法来否定一个正则表达式,但我无法完成它。我希望你能帮助我。

祝你好运, 最大

1 个答案:

答案 0 :(得分:1)

您可以使用以下任一选项。

See regex in use here

(?!\b[^\w\s]\b)[^\w\s]
  • (?!\b[^\w\s]\b)否定先行确保单词字符(数字中的小数点)之间不存在非(字或空格)字符
  • [^\w\s]匹配任何非(字或空白)字符

See regex in use here

\B[^\w\s]|[^\w\s]\B
  • \B[^\w\s]符合以下条件
    • \B匹配\b不匹配的位置
    • [^\w\s]匹配任何非(字或空白)字符
  • [^\w\s]\B符合以下条件
    • [^\w\s]匹配任何非(字或空白)字符
    • \B匹配\b不匹配的位置