【问题标题】:RegEx remove parentheses from stringRegEx 从字符串中删除括号
【发布时间】:2012-04-24 09:57:21
【问题描述】:

如果我有:

string = (1000.00)

如何使用正则表达式删除括号并获得输出为1000.00

谢谢

【问题讨论】:

    标签: regex


    【解决方案1】:

    试试这个正则表达式:

    s/([()])//g
    

    简要说明: [] 用于为任何正则表达式创建一个字符集。对于这种特殊情况,我的字符集() 组成。所以总的来说,用空字符串替换()

    【讨论】:

    • 这对我来说也有点神秘。为了我,你能再解释一下吗? ;)
    • [] 用于创建字符集。我的字符集包含()。所以总的来说,用空字符串替换()
    • 啊,这太小了。我有点困惑,因为我在考虑匹配的括号对。
    • 谢谢!我曾经喜欢这个string.replace(/([()])/g, '')
    【解决方案2】:

    替换模式:

    \((.+?)\)
    

    用替换模式:

    \1
    

    注意括号 () 的转义,因为它们作为括号字符的字面意思。

    【讨论】:

    • 我不太明白替换后的最终值是多少。您能否说明这一点并解释 /1 的作用?谢谢
    • \1 是一个“反向引用”。它的意思是“任何被第一组括号捕获的东西。”
    • 那么最终的正则表达式是什么?很抱歉很痛苦
    • 它是正则表达式 match pattern \(.+?\)replacement pattern \1 的匹配对。
    • “我不想理解——我只想要答案!”
    【解决方案3】:

    Perl 语法:/\(([0-9\.]+)\)/(未经测试)

    更新:(更严格)

    Perl 语法:/\((-?[0-9]+\.[0-9]*)\)/

    【讨论】:

    • 这在这种情况下可以工作,但不会匹配(-100.00)。它还匹配(.....)(1.2.3)。如果您要完全没有选择性,则最好正确执行并使用.+?。 ;)
    • 好吧,Li-aung.. 我更新了我的正则表达式。更好的?无论如何,他并没有严格要求数字,所以我的正则表达式非常适合他的情况..
    • 确实更好。更新后的还通过(1000.) - 一个带小数点且后面没有数字的数字。 作为旁注: 为了匹配整数或十进制数,我实际上会使用(-\s*)?\d+(\.\d+)?。如果要匹配工程符号,请在其后添加一个额外的(\s*[eE]\s*-?\s*\d+),例如-1.024e10。 ;)
    • 你是对的,他没有要求数字。以上 cmets 仅供参考。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2013-01-02
    相关资源
    最近更新 更多