user11
user11

Reputation: 331

Match a string that begin with certain pattern and ends with a certain pattern

I have to fetch all string that starts with [[{ and ends with }]]. I tried to use:

'/^\[\[\{*$\}\}\]\]/'

but it does not work.

Basically I have to fetch some JSON string embedded inside HTML documents.

Upvotes: 1

Views: 41

Answers (2)

MattSizzle
MattSizzle

Reputation: 3175

This is the perfect use for lookarounds and you can use them like so:

$re = '/(?=\[\[\{).*?(?<=\}\]\])/m'; 
preg_match_all($re, $str, $matches);

Here, preg_match_all() searches $str for all matches to the regular expression given in $re and puts them in $matches.

Regex101 Demo

Upvotes: 2

sshashank124
sshashank124

Reputation: 32189

You should put anchors on it correctly. They are currently in the wrong place. This is the proper version. You should use it with preg_match_all(...):

/\[\[\{.*?\}\]\]/

Upvotes: 2

Related Questions