from flask import Blueprint, request, jsonify import re from util.logger import logger from auth.token import verify_token regex_blueprint = Blueprint('regex_tool', __name__) _FLAG_MAP = {"i": re.IGNORECASE, "m": re.MULTILINE, "s": re.DOTALL} @regex_blueprint.route('/api/regex/test', methods=['POST']) def test_regex(): user = verify_token() if not user: return jsonify({"message": "Nicht autorisiert"}), 401 try: data = request.get_json(silent=True) or {} pattern = data.get("pattern", "") text = data.get("text", "") flags_list = data.get("flags", []) combined = 0 for f in flags_list: if f in _FLAG_MAP: combined |= _FLAG_MAP[f] try: compiled = re.compile(pattern, combined) except re.error as e: return jsonify({"matches": [], "count": 0, "error": str(e)}) matches = [ {"match": m.group(), "start": m.start(), "end": m.end(), "groups": list(m.groups())} for m in compiled.finditer(text) ] logger.info(f"Regex getestet von {user['username']}") return jsonify({"matches": matches, "count": len(matches), "error": None}) except Exception as e: logger.error(f"Fehler Regex-Tester: {e}") return jsonify({"message": "Fehler beim Testen"}), 500