java - 我可以定义自定义字符类简写吗?

标签 java regex customization

Java 提供了一些有用的字符类,如\d\w。我可以定义自己的角色类别吗?例如,能够为 [A-Za-z_] 等字符类定义简写会很有用。

最佳答案

Can I define my own character classes?

不,你不能。

就个人而言,当我有一个(稍微)复杂的正则表达式时,我将正则表达式分解为更小的子正则表达式,然后使用 String.format(...) 将它们“粘合”在一起,例如这个:

public static boolean isValidIP4(String address) {
    String block_0_255 = "(0|[1-9]\\d|2[0-4]\\d|25[0-5])";
    String regex = String.format(
            "%s(\\.%s){3}", 
            block_0_255, block_0_255
    );
    return address.matches(regex);
}

这比单一模式更具可读性:

"(0|[1-9]\\d|2[0-4]\\d|25[0-5])(\\.(0|[1-9]\\d|2[0-4]\\d|25[0-5])){3}"

请注意,这只是一个简单的示例:验证 IP 地址可能最好由 java.net 包中的一个类来完成,如果您这样做,模式应该放在方法之外并进行预编译。

小心模式中的 % 符号!

关于java - 我可以定义自定义字符类简写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775383/

相关文章:

java - 从 Jsoup 元素对象获取字符串文本

javascript - 正则表达式 javascript 中的 $1

php - 正则表达式用于查找包含在两个小节之间并包含某些单词的字符串

android - Add an item at current progressBar position - 创建自定义进度条

java - 向 Play Framework 应用程序添加 OpenID 支持时如何调用absoluteURL()?

java - 当我不需要它时,为什么要使用collect(Collectors.toList())?

java - 如果信息在转换为字节码的过程中丢失,是否有可能编写一个像样的 Java 优化器?

javascript - 按行拆分javascript中的字符串,保留换行符?

emacs - 无法将颜色主题应用于 Emacs 中的一个框架?

language-agnostic - 您为自定义 IDE 做了哪些工作?