【问题标题】:Regex to match punctuation except for decimal numbers正则表达式匹配标点符号,十进制数字除外
【发布时间】:2018-04-05 17:35:57
【问题描述】:

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

因此,例如,给定句子:

是 x + 0.89 = y * 13.098?!?

我想得到的是

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

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

最好的问候, 最大

【问题讨论】:

    标签: regex regex-negation


    【解决方案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 不匹配的位置

    【讨论】:

      猜你喜欢
      • 2017-02-27
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多