How to modify HTTP response body with Charles Proxy rewrite tool and regex?

Marian Paździoch picture Marian Paździoch · Nov 4, 2016 · Viewed 12.8k times · Source

I'm trying to change HTTP response body with Charles Proxy using rewrite tool / regex? The response is a JSON.

So part of the returned response JSON body is:

"unavailablePosts": ["AA", "BB"],

and what I want is:

"unavailablePosts": "XXX",

I try to set up Charles' rewrite like this:

enter image description here

So the regex is like:

"unavailablePosts": \[(.*)\],

But ... (as I'm asking this question) it does not work, i.e. nothing is changed in response body.

Answer

Wiktor Stribiżew picture Wiktor Stribiżew · Nov 4, 2016

I believe there are some linebreaks in between the values, and to match them you need to add \s* (zero or more whitespaces) around : and use [\s\S]*? (any 0+ chars but as few as possible as *? is a lazy quantifier) to match the substring between [ and ],:

 "unavailablePosts"\s*:\s*\[([\s\S]*?)\],