import re
regex = re.compile(r"(?<first><<<<<<< HEAD\n.*?)(?<========)|(?<second>(?=>>>>>>>).*?\n)", flags=re.DOTALL)
test_str = ("<<<<<<< HEAD\n"
"import { readdir } from \"fs\";\n"
"import { createServer } from \"../src/server.js\";\n"
"import Jasmine from 'jasmine';\n"
"import dotenv from 'dotenv';\n\n"
"const jasmine = new Jasmine();\n"
"=======\n"
"import { start } from \"../src/index.js\";\n\n"
"import dotenv from 'dotenv';\n"
"import { readdir } from \"fs\";\n"
"import Jasmine from 'jasmine';\n"
"import { resolve } from 'path';\n\n"
">>>>>>> c80322f... Refactor codebase. Removed ml parts into separate project.\n"
"// jasmine.loadConfigFile(`tests/jasmine.json`);\n\n"
"const importTests = () => {\n"
" return new Promise((resolve, reject) => {\n"
" readdir(`./tests`, (err, files) => {\n"
" if (err) {\n"
" reject(err);\n"
" }\n"
" files = files.filter(file => { \n"
" return file.includes(`test.js`);\n"
" });\n"
" console.log(files);\n"
" files = files.map(file => { \n"
" const relativePath = `./${file}`;\n"
" return import(relativePath)\n"
" .catch(error => {\n"
" console.error(`** Error loading ` + relativePath + `: `);\n"
" console.error(error);\n"
" process.exit(1);\n"
" });\n"
" });\n\n"
" resolve(Promise.all(files));\n"
" });\n"
" });\n"
"};\n\n"
"const runTests = () => {\n"
"<<<<<<< HEAD\n"
" dotenv.config();\n\n"
" importTests().then(() => {\n"
" const server = createServer({\n"
" useAuth: false,\n"
" });\n\n"
" server.options.port = 4040;\n"
" process.env.GRAPHQL_ENDPOINT = `http://127.0.0.1:4040`;\n\n"
" server.start(() => {\n"
" console.log(`Test server is running on 127.0.0.1:${server.options.port}`);\n"
" jasmine.execute();\n"
" });\n"
"=======\n"
" const jasmine = new Jasmine();\n"
" const environment = process.env.NODE_ENV || `staging`;\n\n"
" dotenv.config({\n"
" path: resolve(`../src/config/${environment}/.env`),\n"
" });\n\n"
" importTests().then(async () => {\n"
" process.env.MONGODB_URIS = `mongodb+srv://f4a-shared-t95ry.gcp.mongodb.net/test`;\n"
" process.env.GRAPHQL_ENDPOINT = `http://127.0.0.1:4040`;\n"
" process.env.PORT = `4040`;\n"
" await start();\n"
" console.log(`Test server is running on 127.0.0.1:${server.port}`);\n"
" jasmine.execute();\n"
">>>>>>> c80322f... Refactor codebase. Removed ml parts into separate project.\n"
" });\n"
"};\n"
"runTests();")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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 Python, please visit: https://docs.python.org/3/library/re.html