【问题标题】:Regex: how to find a comma between two quotation marks正则表达式:如何在两个引号之间找到逗号
【发布时间】:2016-08-29 15:52:46
【问题描述】:

我需要找到两个引号之间的点,并用逗号替换它。

我正在尝试这个

\".*?\"

但它会找到引号之间的所有内容。

我需要将这样的“100,21$”转换为“100.21$”

【问题讨论】:

  • 什么是正则表达式?正如regex tag info 所述,所有带有此标签的问题还应包含一个标签,指定适用的编程语言或工具。
  • 另外,如果你有货币,你可能只是将整数和小数部分匹配成组,然后使用反向引用。这些字符串是独立的吗?
  • 我用的是Sublimetext,不知道怎么用反向引用,我去找找!
  • 请看我的回答,"(\d*),(\d+)\$" 解决方案。
  • 感谢@WiktorStribiżew,您的解决方案奏效了!

标签: regex sublimetext2


【解决方案1】:

一般来说,你可以匹配引用的子字符串先用a

"[^"]+"

然后将匹配块中的. 替换为,(在回调或后处理方法/函数中)。

或者,您可以使用捕获 + 反向引用:

"(\d*),(\d+\$)"

替换为"$1.$2"(其中$1(\d*) 捕获的文本,$2(\d+\$) 捕获的值)。见this demo

【讨论】:

    【解决方案2】:

    如果您的字符串像您的示例一样简单:"100,21$" 您可以简单地使用此代码:

    str = str.replace(/,/g,'.');
    

    如果它有点复杂,比如:

    Here is an "example" of "100,21$" price, I am a string
    

    你可以用这个:

    str = str.replace(/"(\d+),(\d+)(.*?)"/g,'"$1.$2$3")
    

    如果你想测试正则表达式链接: http://regexr.com/3dbo5

    nb : 我写了这个例子,但是你可以在其他语言中使用正则表达式和字符串模式

    【讨论】:

    • OP 平台不是 JavaScript。
    • 是的,但是你可以在你的代码中使用我的 JS 模式和字符串模式我也做了一个正则表达式链接:regexr.com/3dbo5
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2015-10-05
    • 2014-06-06
    相关资源
    最近更新 更多