import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "wald493#2";
final String string = "\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";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html