import re
regex = re.compile(r"wald493#2", flags=re.MULTILINE)
test_str = ("\n"
"//zeigt nur 1nen Eintrag an\n\n"
"export default function SchuelerEintrag({Schueler, onDelete, onEdit}){\n\n\n\n"
" return(\n\n"
" <div>\n"
" <br></br>\n"
" <h1>Name: {Schueler.name}</h1>\n"
" <p>Money: {Schueler.money}</p>\n\n"
" <button type = \"button\" className=\"bg-red-500 py-2 px-4 hover:bg-red-400\" onClick={() => onDelete(Schueler.id)}>\n"
" Delete\n"
" </button>\n\n"
" <button type =\"button\" className=\"bg-yellow-500 py-2 px-4 hover:bg-red-400\" onClick={() => onEdit(Schueler)}>\n"
" Edit\n\n"
" </button>\n\n"
" \n\n"
" </div>\n\n\n\n"
" )\n\n"
"//SchülerForm\n\n"
"import { Sumana } from \"next/font/google\";\n"
"import { useForm, Controller } from \"react-hook-form\";\n"
"import { z } from \"zod\";\n"
"import {zodResolver} from \"@hookform/resolvers/zod\"\n"
"import { useEffect } from \"react\";\n\n\n"
"const SchuelerSchema = z.object({\n"
" name: z.string().min(1, \"Name ist zu kurz\"),\n"
" money: z.coerce.number({invalid_type_error: \"muss eine Zahl sein\"}).gt(0, \"Zahl muss größer als 0 sein\").int(\"muss eine ganze Zahl sein\") \n"
"})\n\n"
"try{\n\n"
"const result = SchuelerSchema.parse({name: \"\"})\n\n\n\n"
"} catch(error){\n\n\n"
"console.log(error.issues)\n\n"
"}\n\n"
"export default function SchuelerForm ({onSubmit, editData}){\n"
" const {\n"
" control,\n"
" handleSubmit,\n"
" reset,\n"
" formState: {errors}\n"
" } = useForm({\n"
" resolver: zodResolver(\n"
" SchuelerSchema\n"
" ),\n"
" defaultValues: {\n"
" name: \"\",\n"
" money: 0\n"
" }\n"
" })\n\n"
" useEffect(() => {\n\n"
" if(editData){\n"
" reset(editData)\n"
" }else{\n"
" reset({name: \"\", money: 0})\n"
" }\n\n"
" }, [editData, reset])\n\n"
" const submitHandler = (data) => {\n"
" onSubmit(data);\n"
" reset( {name: \"\", money: 0});\n"
" }\n"
" return(\n\n"
" <div>\n"
" <form \n"
" onSubmit={handleSubmit(submitHandler)}\n"
" >\n"
" <div>\n"
" <label>\n"
" name: \n"
" </label>\n\n"
" \n\n"
" <Controller\n"
" name=\"name\"\n"
" control={control}\n"
" render={({ field })=> (\n"
" <input className=\"bg-amber-300 text-black\"\n"
" {...field}\n"
" type = \"text\"\n"
" placeholder=\"Mustername\"\n"
" />\n"
" )}\n"
" /> \n\n"
" </div>\n\n"
" <div>\n"
" <label>\n"
" money:\n"
" </label>\n\n"
" <Controller\n"
" name=\"money\"\n"
" control={control}\n"
" render={({field}) => (\n"
" <input className=\"bg-amber-300 text-black\"\n"
" {...field}\n"
" type = \"number\"\n"
" placeholder=\"0\"\n"
" />\n"
" )}\n"
" />\n\n"
" </div>\n\n"
" <button type = \"sumbit\">\n"
" Speichern\n"
" </button>\n\n\n"
" \n"
" \n"
" </form>\n\n"
" <br></br>\n\n"
" {\n"
" errors.name && (<p>{errors.name.message}</p>)\n"
" \n"
" }\n\n"
" {\n"
" errors.money && (<p>{errors.money.message}</p>)\n"
" }\n\n"
" \n"
"<br></br>\n\n"
" </div> \n\n"
" \n\n"
" );\n"
"}\n\n"
"//SchülerListe\n\n"
"import SchuelerEintrag from \"./SchuelerEintrag\"\n\n"
"export default function SchuelerListe({Liste, handleDelete, handleEdit}){\n\n"
" if(Liste.length == 0){\n"
" return(\n"
" <p>keine Einträge</p>\n"
" )\n"
" }\n\n"
" return(\n"
" <div>\n"
" {\n"
" Liste.map((Eintrag) => (<SchuelerEintrag Schueler={Eintrag} onDelete={handleDelete} onEdit={handleEdit} key = {Eintrag.id}/>))\n"
" }\n"
" </div>\n"
" )\n\n"
" \n"
"}\n\n"
"//page.js\n\n"
"import Image from \"next/image\";\n"
"import SchuelerForm from \"./components/SchuelerForm\";\n"
"import SchuelerListe from \"./components/SchuelerListe\";\n\n"
"import { useState } from \"react\";\n\n\n"
"export default function Home() {\n\n"
" const [SchuelerEinträge, setSchuelerEinträge] = useState([]);\n"
" const [editData, setEditData] = useState(null);\n\n"
" const addItem = (data) => { \n"
" \n"
" if(editData){\n"
" setSchuelerEinträge((prev) => prev.map((s)=>(s.id === editData.id ? {...data, id: editData.id} : s) ) )\n"
" setEditData(null)\n"
" } else{\n"
" setSchuelerEinträge((prev)=> [...prev, {...data, id: Date.now()}])\n"
" }\n\n"
" \n\n\n"
" }\n\n"
" const handleEdit = (Schueler) => {\n"
" setEditData(Schueler)\n"
" }\n\n\n"
" const deleteItem = (id) => {\n"
" setSchuelerEinträge((prev) => prev.filter((Eintrag) => Eintrag.id != id))\n"
" } \n\n"
" \n"
" return (\n"
" <div>\n"
" <SchuelerForm onSubmit={addItem} editData={editData}/>\n"
" <SchuelerListe Liste={SchuelerEinträge} handleDelete={deleteItem} handleEdit={handleEdit}/>\n"
" </div>\n"
" );\n"
"}\n\n\n\n\n\n\n")
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