在 jackson ,I can map YAML 中的字符串:
regexField: "(\\d{2}):(\\d{2})"
到类上的 Pattern
字段:
final class MappedFromYaml {
private Pattern regexField;
// ... accessors
}
Jackson 的ObjectMapper
将创建一个带有默认标志的Pattern
。是否可以使用设置的特定标志(例如 Pattern.MULTILINE
)来创建它?理想情况下,我希望能够在 YAML 中指定这些标志,但如果做不到这一点,我们也会赞赏在 Java 代码中为特定字段指定标志的解决方案。
最佳答案
有两种方法。第一个是直接嵌入标志 into the regex :
regexField: "(\\d{2}):(\\d{2})(?m)"
否则不要直接映射到Pattern
,而是引入一个自定义类型,例如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);
}
}
可以从 YAML 构建
pattern:
regex: "(\\d{2}):(\\d{2})"
multiline: true
关于java - jackson YAML : mapping a regex Pattern with flags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37565029/