gpt4 book ai didi

java - 如何编写正则表达式 "word character"的 CharMatcher 等效项?

转载 作者:行者123 更新时间:2023-12-02 00:12:46 26 4
gpt4 key购买 nike

正则表达式 \w 与字符 [A-Za-z0-9_] 完全匹配,这正是我现在需要的。我想知道是否有任何简单的方法如何创建相应的Guava的CharMatcher 。我执行了以下操作(我不喜欢静态导入):

private final static CharMatcher IDENTIFIER_CHAR = CharMatcher.is('_')
.or(CharMatcher.inRange('A', 'Z'))
.or(CharMatcher.inRange('a', 'z'))
.or(CharMatcher.inRange('0', '9'))
.precomputed();

有一些预定义的匹配器,但是类似

private final static CharMatcher IDENTIFIER_CHAR = CharMatcher.ASCII
.and(CharMatcher.JAVA_LETTER_OR_DIGIT)
.or(CharMatcher.is('_'))
.precomputed();

看起来并没有好转。在我们得到 closures 之前使用 forPredicate 也不行。在Java 8中。这里没有真正的问题,只是对于简单且(我猜)常见的东西来说太冗长了。

还有更好的解决方案吗?也许有人实现了类似 newRegexLikeCharMatcher("[A-Za-z0-9_]") 的东西?

最佳答案

您建议的方法的实现可能是:

public CharMatcher newRegexLikeCharMatcher(String regex) {
final Pattern pattern = Pattern.compile(regex);
return new CharMatcher() {
@Override
public boolean matches(char c) {
return pattern.matcher(Character.toString(c)).find();
}
}.precomputed();
}

public CharMatcher newRegexLikeCharMatcher(String regex) {
return CharMatcher.forPredicate(Predicates.compose(Predicates.containsPattern(regex), Functions.toStringFunction()))
.precomputed();
}

关于java - 如何编写正则表达式 "word character"的 CharMatcher 等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12378702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com