Zum Inhalt

Werte aus regulären Ausdrücken erzeugen

Verwende das Attribut pattern, wenn ein erzeugter String einem strukturellen Format entsprechen muss. DATAMIMIC leitet das Muster an sein Rust-Backend rand_regex weiter; der Seed-Ausführungspfad bleibt deterministisch.

regex-patterns.xml
1
2
3
4
5
6
7
<generate name="identifiers" count="10">
    <key name="username" pattern="[A-Za-z]{5,15}"/>
    <key name="phone_number" pattern="\d{10}"/>
    <key name="password" pattern="[A-Za-z0-9]{8,12}"/>
    <key name="date" pattern="\d{4}-\d{2}-\d{2}"/>
    <key name="custom_id" pattern="[A-Z][a-z]+[0-9]"/>
</generate>

Patterns beschreiben die Form, nicht die fachliche Gültigkeit. \d{4}-\d{2}-\d{2} kann beispielsweise einen String im gewünschten Layout erzeugen, garantiert aber kein reales Kalenderdatum. Verwende einen Datumsgenerator oder eine Validierungsregel, wenn die Semantik relevant ist.

Unterstützte Mustersprache

Unterstützt wird die Syntax der von DATAMIMIC verwendeten Versionen: Rust regex 1.10.6 und rand_regex 0.17.0. Sie ist weder PCRE noch die uneingeschränkte Python-re-Sprache.

  • Literale, Zeichenklassen wie [A-Z], begrenzte Quantifizierer wie {2,8}, Alternativen mit | und Gruppen werden unterstützt.
  • DATAMIMIC normalisiert \d vor der Übergabe an das Rust-Backend zur ASCII-Klasse [0-9].
  • Lookarounds wie (?=...) und Rückreferenzen wie \1 werden von der Rust-Regex-Sprache nicht unterstützt.
  • Bevorzuge begrenzte Quantifizierer. Sehr breite unbegrenzte Ausdrücke machen die Ausgabelänge unklar und können unnötig teure Generierung verursachen.

Wenn ein Muster eine fachliche Regel und nicht nur eine Form ausdrückt, kombiniere es mit einer Validierungsregel oder verwende einen Domänengenerator. Ein Regex kann eine Kennung formatieren, aber nicht nachweisen, dass eine externe Stelle sie vergeben hat.

Den exakten aktuellen Attributvertrag zeigt die generierte Key-Referenz.