#include <iostream>
#include <string>
#include <regex>
#include <iterator>
using namespace std;
 
int main()
{
 
// Target sequence
std::string s = "function myFunction(p1, p2) { return p1 * p2; }";
 
// An object of regex for pattern to be searched
regex r("^function\\s+([\\w\\$]+)\\s*\\(");
 
// flag type for determining the matching behavior
// here it is for matches on 'string' objects
smatch m;
 
// regex_search() for searching the regex pattern
// 'r' in the string 's'. 'm' is flag for determining
// matching behavior.
regex_search(s, m, r);
 
// for each loop
for (auto x : m)
    cout << x << " ";
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDxpdGVyYXRvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewoKLy8gVGFyZ2V0IHNlcXVlbmNlCnN0ZDo6c3RyaW5nIHMgPSAiZnVuY3Rpb24gbXlGdW5jdGlvbihwMSwgcDIpIHsgcmV0dXJuIHAxICogcDI7IH0iOwoKLy8gQW4gb2JqZWN0IG9mIHJlZ2V4IGZvciBwYXR0ZXJuIHRvIGJlIHNlYXJjaGVkCnJlZ2V4IHIoIl5mdW5jdGlvblxccysoW1xcd1xcJF0rKVxccypcXCgiKTsKCi8vIGZsYWcgdHlwZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIG1hdGNoaW5nIGJlaGF2aW9yCi8vIGhlcmUgaXQgaXMgZm9yIG1hdGNoZXMgb24gJ3N0cmluZycgb2JqZWN0cwpzbWF0Y2ggbTsKCi8vIHJlZ2V4X3NlYXJjaCgpIGZvciBzZWFyY2hpbmcgdGhlIHJlZ2V4IHBhdHRlcm4KLy8gJ3InIGluIHRoZSBzdHJpbmcgJ3MnLiAnbScgaXMgZmxhZyBmb3IgZGV0ZXJtaW5pbmcKLy8gbWF0Y2hpbmcgYmVoYXZpb3IuCnJlZ2V4X3NlYXJjaChzLCBtLCByKTsKCi8vIGZvciBlYWNoIGxvb3AKZm9yIChhdXRvIHggOiBtKQogICAgY291dCA8PCB4IDw8ICIgIjsKfQo=