Importwerkzeuge

Regex (TMS)

Inhalte werden von Phrase Language AI maschinell aus dem Englischen übersetzt.

Der reguläre Ausdruck (abgekürzt als RegEx oder Regex) ist eine Zeichenfolge, die ein Suchmuster bildet, hauptsächlich zur Verwendung beim Musterabgleich mit Zeichenketten oder beim Zeichenkettenabgleich. Die Funktionalität ist ähnlich wie bei Finden und Ersetzen Operationen, jedoch mit mehr Komplexität und Spezifität, oder als Methode zum Ausschluss definierter Inhalte. Sieh dir den Wikipedia Eintrag für eine detaillierte Beschreibung von RegEx und eine Tabelle der verwendeten Zeichen an.

Um mehrere Regex gleichzeitig zu verwenden, füge ein Pipeline-Zeichen | zwischen ihnen ein.

Regex kann in den Filter-, Such- und Ersetzungsfeldern im CAT Editor, in den Quell- und Zielfeldern der Suche nach Inhaltsfunktion, für die In Tags umwandeln Funktion in Dateiimporteinstellungen und zur Anpassung von Segmentierungsregeln verwendet werden. Der Konverter und der CAT Desktop Editor verwenden Java Regex, während der CAT Web Editor und die Suche in TMS die Lucene Regex Engine verwenden.

Tipp

AI-Chatbots können sehr effektiv beim Generieren und Überprüfen von Regex sein.

Verwende Tools wie Regex101, um Regex mit verschiedenen Eingaben zu testen.

Wichtig

Phrase unterstützt Java Regex, wird jedoch komplexe reguläre Ausdrücke ablehnen, um das System vor Überlastung zu schützen. Komplexe Regex sind solche mit Quantifizierern (außer possessiven) in Gruppen, die andere Quantifizierer (außer possessiven) enthalten.

Allgemeine Beispiele

Beispiele für die Umwandlung von Text in Tags beim Importieren von Dateien und die Verwendung von Regex im Desktop-Editor für Filter- und Such- und Ersetzungsfunktionen:

Beispiel

Beschreibung

<[^>]+>

repräsentiert <html_tag>

\{[^\}]+\}

repräsentiert {variable},

\[[^\]]+\]

repräsentiert [variable],

\[\[.+?\]\]

repräsentiert [[aa[11]bb]].

\$[^\$]+\$

repräsentiert $operator_Name1$.

\d+

repräsentiert Zahlen. Auch, [0-9]+

[A-Za-z0-9]

repräsentiert jedes alphanumerische Zeichen.

.+\@.+\..+

E-Mail-Adresse name@domain.com

\d{4}[-]\d{2}[-]\d{2}

das Datum 2018-08-01

\s$

ein Leerzeichen am Ende des Segments

^\s

ein Leerzeichen am Anfang des Segments

\s\s

ein doppeltes Leerzeichen

^\d

eine Ziffer am Anfang des Segments

\w+\s\s\w+

ein doppeltes Leerzeichen zwischen Wörtern

\s\n

ein Zeilenumbruch, dem ein Leerzeichen vorangeht

\S\n

ein Zeilenumbruch, dem ein Nicht-Leerzeichen vorangeht

<[^>]+>|\$[^=]+=

konvertiert PHP-Variablen und HTML-Code ($svariable['name'] =)

^\s*\'[^:]+:

konvertiert Javascript-Feldschlüssel mit hinzugefügten Leerzeichen am Anfang der Zeile ('key' :)

\{\{[^\}]+\}\}|\'[^']+\'

übersetzt nicht {{text here}} '{{text here}} Inhalt und konvertiert es in Tags

\{\{[^\}]+\}\}

stellt Text zwischen {{}} Klammern dar

\([^\)]+\)

stellt Text zwischen () Klammern dar

\^[^\^]+\^

stellt Text zwischen ^-Zeichen dar

\@[^\@]+\@

stellt Text zwischen @-Zeichen dar

\^[^\^\?]+\?

stellt Text zwischen ^ und ?-Zeichen dar

\'[^']+\'

stellt Text zwischen ' ' Apostrophen dar

\"[^"]+\"

stellt Text zwischen "" Anführungszeichen dar

\%[^\%]+\%

stellt Text zwischen % Symbolen dar

\$\{[^}]*\}

stellt Text zwischen ${ und } dar, z.B. ${variable}

\$[a-zA-Z0-9\-_]+

stellt eine Zeichenfolge dar, die mit $ beginnt, z.B. $appName

(?<=\: ").*(?=")

stellt Text innerhalb von doppelten Anführungszeichen nach einem Doppelpunkt und einem Leerzeichen dar, z.B. value in der Zeichenfolge "key": "value"

(?<=\: ').*(?=')

stellt Text innerhalb von einfachen Anführungszeichen nach einem Doppelpunkt und einem Leerzeichen dar, z.B. JohnDoe in der Zeichenfolge user: 'JohnDoe'

(?<=\=).*(?=)

stellt Text nach einem Gleichheitszeichen und ohne Leerzeichen dar, z.B. key=value

(.*)=

stellt Text vor einem Gleichheitszeichen dar

=(.*)

stellt Text nach einem Gleichheitszeichen dar

\/\/\S*

stellt Hyperlinks dar. Also, https:\/\/\S*

</?mrk[^>]*>

stellt HTML/XML offene und geschlossene mrk Tags dar, z.B. <mrk id="abc"> und </mrk>

TXT-Import

Hinweis

Da TXT-Dateien in TMS zeilenweise verarbeitet werden, funktionieren bestimmte reguläre Ausdrücke, die in anderen Umgebungen funktionieren, möglicherweise nicht wie erwartet.

Beispiele für reguläre Ausdrücke beim Importieren eines bestimmten Textes:

  1. ## Fehlermeldung ##1## Die Zahl muss größer als 0 sein. ##Z##

    Um Text zwischen ##1## und ##Z## zu importieren, benutze Regex: (?<=##1## ).*(?= ##Z##)

  2. Fehlermeldung ("Die Zahl muss größer als 0 sein.")

    Um Text zwischen (" und ") zu importieren, benutze Regex: (?<=\(").*(?="\))

  3. 'fehlermeldung' = 'Die Zahl muss größer als 0 sein.'

    Um Text nach dem = Zeichen und zwischen ' und ' zu importieren, benutze Regex: (?<=\= ').*(?=')

  4. fehlermeldung = "dies ist zu übersetzen"

    Um Text nach dem = Zeichen und zwischen 'und' zu importieren, benutze Regex: (?<=\= ").*(?=")

  5. msgstr ("Die Zahl muss größer als 0 sein.")

    Um msgstr-Strings in monolingualen PO-Dateien mit einem TXT-Filter zu importieren, benutze Regex: (?<=msgstr ").*(?=")

  6. # Hinweis: Dies ist ein Hinweis

    Um Zeilen auszuschließen, die mit # beginnen, benutze Regex: (^[^#].*)

  7. Werte '126', 'DCeT', 'Text (en)'

    Um nur Text in Anführungszeichen und mit (en), wie Text (en) zu importieren, benutze Regex: (?<=')[^']*\(en\)(?=')

JSON-Import

Beispiel für JSON-Struktur:

{
"liste": {
        "id": "1",
        "wert": "Text 1 zur Übersetzung."
        },
"text": {
        "id": "2",
        "value": "Text 2 zur Übersetzung."
        },
"menu": {
        "id": "3",
        "value": "Text 3 zur Übersetzung."
         },"array": ["blue","green"],"arrays": [{        "color": "blue",        "title": "BLUE"
         },         {        "color": "green",        "title": "GREEN"         }    ]}
  • um jeden Wert unabhängig von der Ebene zu importieren, verwende: (^|.*/)value

  • um nur einen Wert aus einer Liste zu importieren, verwende: list/value

  • um einen Wert aus einer Liste und/oder einem Menü zu importieren, verwende den | (ODER) Operator: list/value|menu/value

  • um nur die erste Instanz eines Wertes aus einem Menü zu importieren, verwende: menu\[1\]/value

  • um den Inhalt eines JSON-Arrays nach einem bestimmten Schlüssel zu importieren, verwende: (^|.*/)array\[.*\]

  • um den Inhalt eines spezifischen Arrays von Objekten zu importieren, verwende: (^|.*/)arrays\[.*\].*

YAML Import

YAML-Dateibeispiel:

title: A
text: übersetze A
categories:
  title: B
  text: übersetze B
categories:
  title: C
  text: übersetze C
categories:
  content:
      title: D
      text: übersetze D

Regex zum Importieren:

  • nur 'übersetze A' : text

  • nur 'übersetze C': categories\[2\]/text

  • nur 'übersetze D': categories\[\d+\]/content[\1\]/text

  • alle Texte: text|categories\[\d+\]/text|categories\[\d+\]/content[\d+\]/text

Segmentierungsregeln

Okapi, Java und Unicode werden für Segmentierungsregeln in .SRX-Dateien verwendet.

Die Verwendung von Regex in .SRX-Dateien ist komplex, und es wird empfohlen, grundlegende Kenntnisse im Umgang mit regulären Ausdrücken zu haben, bevor man damit arbeitet.

Nobreak-Regeln (Abkürzungen usw.) und Break-Regeln (Satzende mit einem Punkt usw.) befinden sich in .SRX-Dateien.

Beispiel

Beschreibung

[\p{C}]

Unsichtbares Steuerzeichen.

[\p{Z}]

Leerzeichen

[\p{Lu}]

Ein Großbuchstabe, der eine Kleinbuchstabenvariante hat.

[\p{N}]

Jede Art von numerischem Zeichen.

\Q ... \E

Anfang und Ende eines Zitats - (\QUngef.\E). Dies wird für Abkürzungen verwendet.

\t

Tabulator

\n

Neue Zeile

\u2029

Absatztrenner

\u200B

Nullbreiten-Leerzeichen

\u3002

Ideografischer Punkt

\ufe52

Kleiner Punkt

\uff0e

Vollbreiter Punkt

\uff61

Halbbreiter ideografischer Punkt

\ufe56

Kleines Fragezeichen

\uff1f

Vollbreites Fragezeichen

\u203c

Doppeltes Ausrufezeichen

\u2048

Frage Ausrufezeichen

\u2762

Schweres Ausrufezeichen-Ornament

\u2763

Schweres Herz-Ausrufezeichen-Ornament

\ufe57

Kleines Ausrufezeichen

\uff01

Vollbreites Ausrufezeichen

`[\u0080-\uFFFF]+`

Zeichen aus dem Unicode-Bereich \u0080 bis \uFFFF

`[\u00a8\u00b9\u00c4]+`

Eine oder mehrere Vorkommen der angegebenen Unicode-Zeichen innerhalb der eckigen Klammern, z.B. \u00a8 + \u00b9 + \u00c4

Gemeinsame benutzerdefinierte QA-Checks

QA-Prüfung

RegEx – Quelle

RegEx – Zielsprache

Zusätzliche Zahlen im Ziel

\d 

\d 

Tag-Reihenfolge (ungepaart, für Segmente mit 3 Tags).

Passe das Regex an die erforderliche Anzahl von Tags an.

^.*\{1\}.*\{2\}.*\{3\}.*$

^.*\{1\}.*\{2\}.*\{3\}.*$

Tag-Reihenfolge (gepaart, für Segmente mit 3 Tags).

Passe das Regex an die erforderliche Anzahl von Tags an.

^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*\{3\>.*\<3\}.*$

^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*\{3\>.*\<3\}.*$

Leerzeichen vor Tags

\s(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

\s(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

Leerzeichen nach Tags

(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})\s

(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})\s

Kein Leerzeichen vor Tags

\S(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

\S(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

Nicht-Leerzeichen nach gepaarten Tags

((\{[1-9][0-9]*>)|(<[1-9][0-9]*\}))\S

((\{[1-9][0-9]*>)|(<[1-9][0-9]*\}))\S

Fehlende eckige Klammern

[^\[\]]*\[[^\[\]]*\][^\[\]]* 

[^\[\]]*\[[^\[\]]*\][^\[\]]* 

Fehlende runde Klammern

[^\(\)]*\([^\(\)]*\)[^\(\)]* 

[^\(\)]*\([^\(\)]*\)[^\(\)]* 

Verwende die folgenden regulären Ausdrücke, um die gleiche Anzahl identischer Dezimalzahlen zu überprüfen, unter Verwendung des entsprechenden sprachspezifischen Dezimaltrennzeichens.

(?<;n1>;\d+)\.(?<;n2>;\d+)

(?<;n1>;\d+),(?<;n2>;\d+)

War dieser Beitrag hilfreich?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.