【问题标题】:Wrap integers in quotes from json data将整数用 json 数据的引号括起来
【发布时间】:2016-10-21 22:50:11
【问题描述】:

我创建了this question yesterday

我已经意识到实际上还有一些其他数据会导致我收到的解决方案出现问题。因此,我认为最好提出一个新问题

以下面的数据为例;

"87",0000,0767,"078",0785,"0723",23487, "061 904 5284","17\/10\/2016","some.name.789@hotmail.com"

使用上面(?<!")(\b\d+\b)(?!")接受的解决方案

日期字符串最终在两个 \/ 之间包含中间数字,引号中的数字和空格分隔符以及电子邮件地址。 这些问题可以在这里看到:https://regex101.com/r/qVQYA7/6

我的解决方案

以下内容似乎对我有用,但似乎有点混乱。我觉得有一种更简洁的方法可以达到同样的效果;

,(?<!("|\/|\\))(\b\d+\b)(?!("|\/|\\|( \d)))替换为,"$2"

https://regex101.com/r/qVQYA7/5

编辑:

@Federico 此屏幕截图显示逗号之前或之后的空格会破坏替换;

【问题讨论】:

    标签: json regex


    【解决方案1】:

    通过阅读您的两个问题,我了解到您想用双引号括起一些不是的数字,因此为此我可以想出一个简单的正则表达式,如下所示:

    (?<=,)(\d+)(?=,)
    

    使用替换字符串:"$1"

    Working demo

    更新:在您更新问题后,我将更新的答案放在这里。您可以改用此正则表达式:

    (?<=,)\s*(\d+)\s*(?=,)
    

    【讨论】:

    • 这非常接近。我无法确定的一件事是逗号之前或之后是否会有空格。很可能没有空格,但由于我无法控制源数据,我想允许空格。如果空间不同,您的示例将不起作用。 (?&lt;=[, ])(\d+)(?=[, ]) 似乎可以解决这个问题,但我不确定这是否是不好的做法。
    • 啊,等等,这对061 904 5284 号码不起作用
    • @Novocaine 该号码的预期结果是什么,它已经用引号括起来了
    • 这个数字应该保持原样,通过我的尝试调整,这个数字最终会在其中添加额外的引号。
    • @Novocaine 我没有关注你,我的正则表达式没有触及那个数字,我添加了屏幕截图,你只能看到匹配的数字。你能添加一个链接显示什么不工作
    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多