如何为此 javascript 字符串编写正则表达式

How to write regex for this javascript string

下面这个字符串怎么写

"(22.0796251, 82.13914120000004),36", "(22.744108, 77.73696700000005),48",...and so on

像这样:

 (22.0796251, 82.13914120000004)    36

  (22.744108, 77.73696700000005)     48
  ...and so on..................     ..

如何在 javscript 中使用正则表达式来做到这一点?

我的尝试是这样的:

substring = test.split(',');

其中 test 包含要格式化的数据。但是错了

您应该使用 split 的功能来拆分正则表达式,然后 将它们保留在结果中 。为此,只需在正则表达式中放置一个捕获组。在您的情况下,您将 "split" 双引号中的内容:

pieces = test.split(/(".*?")/)
                     ^^^^^^^   CAPTURE GROUP

// ["", ""(22.0796251, 82.13914120000004),36"", ", ", ""(22.744108, 77.73696700000005),48"", ""]

问号是为了确保它不会吃掉输入中最后一个引号之前的所有字符。它使 * 量词 "non-greedy".

现在去掉垃圾(空字符串和 ", "):

pieces = pieces . filter (function(seg) { return !/^[, ]*$/.test(seg); })

// ["(22.0796251, 82.13914120000004),36", "(22.744108, 77.73696700000005),48"]

接下来你可以用另一个正则表达式分解每一部分,如

arrays = pieces . map(function(piece) { return piece.match(/(.*), (.*)/).slice(1); });

// [["(22.0796251, 82.13914120000004)", "36"], ["(22.744108, 87.73696700000005)", "48"]]

slice是去掉match返回的数组的第一个元素,这是整个匹配,我们不需要。

现在打印出来 arrays,进一步拆分它的元素,或者用它做任何你想做的事。