我需要删除以下字符串的第一个括号之后的空间和最后一个括号之前的空间:

POINT ( -68.1712366598 -16.5122344611 4124.6247727228 )
POINT ( -68.1712366598 -16.5122344611 )
POINT Z ( -68.1712366598 -16.5122344611 4124.6247727228 )
POINT Z ( -68.1712366598 -16.5122344611 )


结果将是:

POINT (-68.1712366598 -16.5122344611 4124.6247727228)
POINT (-68.1712366598 -16.5122344611)
POINT Z (-68.1712366598 -16.5122344611 4124.6247727228)
POINT Z (-68.1712366598 -16.5122344611)


我可以得到第一个空格,但最后一个空格有问题。

^\w*\s*\((\s*)


我的尝试请参见regex101

最佳答案

只是.replace(/\(\s*(.*?)\s*\)/,"($1)"))

这个想法是使用非贪婪捕获.*?捕获要替换的两个部分之间的内容。

示范:



document.getElementById("output").innerHTML = document.getElementById("input")
  .innerHTML.split("\n")
  .map(line=>line.replace(/\(\s*(.*?)\s*\)/,"($1)"))
  .join("\n");

<pre id=input>
POINT ( -68.1712366598 -16.5122344611 4124.6247727228 )
POINT ( -68.1712366598 -16.5122344611 )
POINT Z ( -68.1712366598 -16.5122344611 4124.6247727228 )
POINT Z ( -68.1712366598 -16.5122344611 )
</pre>
<pre id=output>
</pre>

09-25 13:07