use strict;
my $str = '{"root": {"type": "root", "format": "", "indent": 0, "version": 1, "children": [{"type": "paragraph", "format": "", "indent": 0, "version": 1, "children": [{"mode": "normal", "text": "text1 hello text", "type": "text", "style": "", "detail": 0, "format": 0, "version": 1}], "direction": "ltr"}], "direction": "ltr"}} hellocat world f
{"root": {"type": "root", "format": "", "indent": 0, "version": 1, "children": [{"type": "paragraph", "format": "", "indent": 0, "version": 1, "children": [{"src": "https://images.unsplash.com/photo-1458966480358-a0ac42de0a7a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w1MjU5NTl8MHwxfHNlYXJjaHwzfHx0cmVlfGVufDB8fHx8MTcxMzk5MjE4OHww&ixlib=rb-4.0.3&q=80&w=1080", "type": "image", "width": 332, "height": "221.329875", "version": 1, "alt_text": "image", "max_width": 500}, {"mode": "normal", "text": "dsadsa", "type": "text", "style": "", "detail": 0, "format": 0, "version": 1}], "direction": "ltr"}, {"type": "paragraph", "format": "", "indent": 0, "version": 1, "children": [{"mode": "normal", "text": "fdsfds", "type": "text", "style": "", "detail": 0, "format": 0, "version": 1}], "direction": "ltr"}], "direction": "ltr"}}
{"root": {"type": "root", "format": "", "indent": 0, "version": 1, "children": [{"type": "paragraph", "format": "", "indent": 0, "version": 1, "children": [{"mode": "normal", "text": "nccccchello ddddd", "type": "text", "style": "", "detail": 0, "format": 0, "version": 1}], "direction": "ltr"}], "direction": "ltr"}}
{"root": {"type": "root", "format": "", "indent": 0, "version": 1, "children": [{"tag": null, "type": "paragraph", "start": null, "format": "", "indent": 0, "version": 1, "children": [{"rel": null, "src": null, "url": null, "mode": "normal", "text": "bvcbvc", "type": "text", "style": "", "title": null, "value": null, "width": null, "detail": 0, "format": 0, "height": null, "indent": null, "inline": null, "target": null, "checked": null, "version": 1, "alt_text": null, "children": null, "equation": null, "field_id": null, "direction": null, "max_width": null, "field_name": null, "field_type": null, "highlight_type": null, "hidden_field_name": null, "hidden_field_value": null}], "language": null, "video_id": null, "direction": "ltr", "list_type": null}], "direction": "ltr"}}
{"root": {"type": "root", "format": "", "indent": 0, "version": 1, "children": [{"tag": null, "type": "paragraph", "start": null, "format": "", "indent": 0, "version": 1, "children": [{"rel": null, "src": null, "url": null, "mode": "normal", "text": "gbfbvc", "type": "text", "style": "", "title": null, "value": null, "width": null, "detail": 0, "format": 0, "height": null, "indent": null, "inline": null, "target": null, "checked": null, "version": 1, "alt_text": null, "children": null, "equation": null, "field_id": null, "direction": null, "max_width": null, "field_name": null, "field_type": null, "highlight_type": null, "hidden_field_name": null, "hidden_field_value": null}], "language": null, "video_id": null, "direction": "ltr", "list_type": null}], "direction": "ltr"}}';
my $regex = qr/(?<=\"text\": \")(.*?hello.*?)(?=", \"type\": \"text\")/mp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html