2016-06-01 6 views
1

In Jackson, I can map eine Zeichenfolge in YAML:Jackson YAML: Abbilden einen RegexMuster mit Fahnen

regexField: "(\\d{2}):(\\d{2})" 

zu einem Pattern Feld auf einer Klasse:

final class MappedFromYaml { 
    private Pattern regexField; 
    // ... accessors 
} 

Jackson ObjectMapper ein Pattern erstellen mit Standardflags Ist es möglich, es mit bestimmten gesetzten Flags zu erstellen, z. B. Pattern.MULTILINE? Im Idealfall würde ich gerne in der Lage sein, diese Flags in YAML anzugeben, aber es wäre auch eine Lösung, die die Flags für ein bestimmtes Feld in Java-Code spezifiziert.

Antwort

1

Es gibt zwei Möglichkeiten. Die erste ist die Einbettung Fahnen direkt into the regex:

regexField: "(\\d{2}):(\\d{2})(?m)" 

Ansonsten Karte nicht direkt auf Pattern, sondern einen benutzerdefinierten Typ wie ein PatternBuilder

public class PatternBuilder { 
    public String regex; 
    public boolean multiline; 
    public Pattern pattern() { 
    int flags = 0; 
    if (multiline) flags |= Pattern.MULTILINE; 
    return Pattern.compile(regex, flags); 
    } 
} 

vorstellen, die aus dem YAML

pattern: 
    regex: "(\\d{2}):(\\d{2})" 
    multiline: true 
gebaut werden kann
+0

Danke, die Flagge in der Regex ist genau das, was ich gesucht habe! –