import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^";
final String string = "class FinUrad\n"
+ "{\n"
+ " public string Kod { get; set; }\n"
+ " public string Nazev { get; set; }\n"
+ " public override string ToString()\n"
+ " {\n"
+ " return Nazev;\n"
+ " }\n"
+ "}\n\n"
+ "<Grid Margin=\"20\">\n"
+ " <Grid.RowDefinitions>\n"
+ " <RowDefinition Height=\"Auto\"/>\n"
+ " <RowDefinition Height=\"*\"/>\n"
+ " <RowDefinition Height=\"Auto\"/>\n"
+ " </Grid.RowDefinitions>\n"
+ " <StackPanel Grid.Row=\"0\" Margin=\"0,0,0,10\">\n"
+ " <TextBlock Text=\"Jméno:\"/>\n"
+ " <TextBox x:Name=\"txtJmeno\" Margin=\"0,5,0,10\"/>\n\n"
+ " <TextBlock Text=\"Rodné číslo (XXXXXX/XXXX):\"/>\n"
+ " <TextBox x:Name=\"txtRC\" Margin=\"0,5,0,10\"/>\n\n"
+ " <TextBlock Text=\"Finanční úřad:\"/>\n"
+ " <ComboBox x:Name=\"comboFinUrady\" DisplayMemberPath=\"Nazev\" Margin=\"0,5,0,10\"/>\n\n"
+ " <TextBlock Text=\"Zpráva:\"/>\n"
+ " <TextBox x:Name=\"txtZprava\" AcceptsReturn=\"True\" Height=\"80\" Margin=\"0,5,0,10\"/>\n"
+ " </StackPanel>\n"
+ " <StackPanel Grid.Row=\"2\" Orientation=\"Horizontal\" HorizontalAlignment=\"Right\">\n"
+ " <Button x:Name=\"btnZobrazitHistorii\" Content=\"Zobrazit historii\" Click=\"btnZobrazitHistorii_Click\"/>\n"
+ " \n"
+ " <Button x:Name=\"btnOdeslat\" Content=\"Odeslat\" Click=\"btnOdeslat_Click\"/>\n"
+ " </StackPanel>\n"
+ "</Grid>\n\n"
+ "public partial class MainWindow : Window\n"
+ "{\n"
+ " private ObservableCollection<FinUrad> urady = new();\n"
+ " private const string ApiUrl = \"https://csharp.janjanousek.cz/api/financni-urady/\";\n"
+ " private const string ApiKey = \"VSB\";\n"
+ " public MainWindow()\n"
+ " {\n"
+ " InitializeComponent();\n"
+ " LoadFinUrady();\n"
+ " }\n"
+ " private async void LoadFinUrady()\n"
+ " {\n"
+ " while (true)\n"
+ " {\n"
+ " try\n"
+ " {\n"
+ " using HttpClient client = new();\n"
+ " client.DefaultRequestHeaders.Add(\"x-api-key\", ApiKey);\n"
+ " var response = await client.GetAsync(ApiUrl);\n"
+ " if (response.StatusCode == System.Net.HttpStatusCode.TooManyRequests)\n"
+ " {\n"
+ " if (response.Headers.TryGetValues(\"Retry-After\", out var values))\n"
+ " {\n"
+ " int secods = int.Parse(values.First());\n"
+ " await Task.Delay(secods * 1000);\n"
+ " continue;\n"
+ " }\n"
+ " }\n"
+ " response.EnsureSuccessStatusCode();\n"
+ " var xmlString = await response.Content.ReadAsStringAsync();\n"
+ " \n"
+ " var xml = XDocument.Parse(xmlString);\n"
+ " var polozky = xml.Descendants(\"POLOZKA\");\n"
+ " foreach (var elem in polozky)\n"
+ " {\n"
+ " string id = elem.Element(\"CHODNOTA\")?.Value;\n"
+ " string name = elem.Element(\"ZKRTEXT\")?.Value;\n"
+ " if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(name))\n"
+ " {\n"
+ " urady.Add(new FinUrad { Kod = id, Nazev = name });\n"
+ " }\n"
+ " }\n"
+ " comboFinUrady.ItemsSource = urady;\n"
+ " comboFinUrady.SelectedIndex = 0;\n"
+ " break;\n"
+ " }\n"
+ " catch (Exception ex)\n"
+ " {\n"
+ " MessageBox.Show(\"Chyba pri nacitani financnich uradu: \" + ex.Message);\n"
+ " break;\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ " private void btnOdeslat_Click(object sender, RoutedEventArgs e)\n"
+ " {\n"
+ " string jmeno = txtJmeno.Text;\n"
+ " string rc = txtRC.Text;\n"
+ " var urad = comboFinUrady.SelectedItem as FinUrad;\n"
+ " string zprava = txtZprava.Text;\n"
+ " if(string.IsNullOrEmpty(jmeno) || string.IsNullOrEmpty(rc) || urad == null || string.IsNullOrEmpty(zprava) || zprava.Length < 10)\n"
+ " {\n"
+ " MessageBox.Show(\"Všechna pole musí být vyplněna a zpráva musí mít alespoň 10 znaků.\");\n"
+ " return;\n"
+ " }\n"
+ " if(!System.Text.RegularExpressions.Regex.IsMatch(rc, @\"^\\d{6}/\\d{4}$\"))\n"
+ " {\n"
+ " MessageBox.Show(\"Rodné číslo musí mít formát 123456/1234.\");\n"
+ " return;\n"
+ " }\n"
+ " SaveToDatabase(jmeno, rc, urad.Kod, urad.Nazev, zprava);\n"
+ " new ResultsWindow().Show();\n"
+ " }\n"
+ " private void btnZobrazitHistorii_Click(object sender, RoutedEventArgs e)\n"
+ " {\n"
+ " new ResultsWindow().Show();\n"
+ " }\n"
+ " private void SaveToDatabase(string jmeno, string rc, string idUrad, string nazevUrad, string zprava)\n"
+ " {\n"
+ " string dbPath = \"formulare.db\";\n"
+ " if(!File.Exists(dbPath))\n"
+ " {\n"
+ " using var connection = new SqliteConnection($\"Data Source={dbPath}\");\n"
+ " connection.Open();\n"
+ " var cmd = connection.CreateCommand();\n"
+ " cmd.CommandText = @\"\n"
+ " CREATE TABLE IF NOT EXISTS Formulare (\n"
+ " Id INTEGER PRIMARY KEY AUTOINCREMENT,\n"
+ " Jmeno TEXT NOT NULL,\n"
+ " RodneCislo TEXT NOT NULL,\n"
+ " IdUrad TEXT NOT NULL,\n"
+ " NazevUrad TEXT NOT NULL,\n"
+ " Zprava TEXT NOT NULL\n"
+ " )\";\n"
+ " cmd.ExecuteNonQuery();\n"
+ " }\n"
+ " using var conn = new SqliteConnection($\"Data Source={dbPath}\");\n"
+ " conn.Open();\n"
+ " var insert = conn.CreateCommand();\n"
+ " insert.CommandText = @\"\n"
+ " INSERT INTO Formulare (Jmeno, RodneCislo, IdUrad, NazevUrad, Zprava)\n"
+ " VALUES ($jmeno, $rc, $idUrad, $nazevUrad, $zprava)\";\n"
+ " insert.Parameters.AddWithValue(\"$jmeno\", jmeno);\n"
+ " insert.Parameters.AddWithValue(\"$rc\", rc);\n"
+ " insert.Parameters.AddWithValue(\"$idUrad\", idUrad);\n"
+ " insert.Parameters.AddWithValue(\"$nazevUrad\", nazevUrad);\n"
+ " insert.Parameters.AddWithValue(\"$zprava\", zprava);\n"
+ " insert.ExecuteNonQuery();\n"
+ " }\n"
+ "}\n\n"
+ "<Grid>\n"
+ " <ListBox x:Name=\"lstHistorie\"/>\n"
+ "</Grid>\n\n"
+ "public partial class ResultsWindow : Window\n"
+ "{\n"
+ " public ResultsWindow()\n"
+ " {\n"
+ " InitializeComponent();\n"
+ " LoadData();\n"
+ " }\n"
+ " private void LoadData()\n"
+ " {\n"
+ " string dbPath = \"formulare.db\";\n"
+ " if (!File.Exists(dbPath)) return;\n"
+ " using var conn = new SqliteConnection($\"Data Source={dbPath}\");\n"
+ " conn.Open();\n"
+ " var cmd = conn.CreateCommand();\n"
+ " cmd.CommandText = @\"\n"
+ " SELECT Jmeno, RodneCislo, IdUrad, NazevUrad, Zprava\n"
+ " FROM Formulare\";\n"
+ " using var reader = cmd.ExecuteReader();\n"
+ " while (reader.Read())\n"
+ " {\n"
+ " lstHistorie.Items.Add($\"Jméno: {reader.GetString(0)}, RČ: {reader.GetString(1)}, Úřad: {reader.GetString(2)}, Zpráva: {reader.GetString(3)}\");\n"
+ " }\n"
+ " }\n"
+ "}";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
if (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