【发布时间】:2023-03-11 05:02:01
【问题描述】:
我正在尝试从我的 GraphQL 查询中删除额外的空格和换行符,但 filter 参数中两个双引号之间的数据应该保持不变。
这是我们 fastly 的 CDN 接收查询的方式
# input
{"query":"query OpName {\n itemCollection (filter: { text: "aa aa aa", text2: "aa aa"}){\n group { slug\n\n\n\n text text2 } } }"}
# expected output
{"query":"query OpName { itemCollection (filter: { text: "aa aa aa", text2: "aa aa"}){ group { slug text text2 } } }"}
目标是
- 从查询中删除多余的空格
- 两个双引号之间的空格应在 graphql 查询中保持不变(因为 filter 参数的值将用于匹配我们数据库中的记录)
我们尝试了以下方法:
-
\s+(?=(?:['|%22](?:\\['|%22]|[^'|%22])+['|%22]|[^'|%22])+$)在fastly docs 给出 \s+(?=([^"]*"[^"]*")*[^"]*$)
但它似乎不起作用。
【问题讨论】:
-
它没有。存在不应删除空格和换行符的情况。从查询中盲目删除所有空格会在解析时破坏它。
-
试试
\s+(?=([^\x22]*[\x22][^\x22]*[\x22])*[^\x22]*$)regex101.com/r/QZlB09/1 -
抱歉,上面的方法似乎也不起作用。