java - 如何在正则表达式中输入 ":"("colon")?

标签 java regex

:(“冒号”)在正则表达式中有特殊含义,但我需要按原样使用,如 [A-Za-z0-9.,-:]* 。 我试图逃避它,但这不起作用 [A-Za-z0-9.,-\:]*

最佳答案

在大多数正则表达式实现(包括 Java 的)中,: 没有特殊含义,无论是在字符类内部还是外部。

您的问题很可能是由于 - 在您的类中充当范围运算符:

[A-Za-z0-9.,-:]*

其中 ,-: 匹配 ','':' 之间的所有 ascii 字符。请注意,它仍然与文字 ':' 匹配!

试试这个:

[A-Za-z0-9.,:-]*

通过将 - 放置在类的开头或结尾,它与文字 "-" 匹配。正如 Keoki Zee 的评论中提到的,您也可以在类中转义 -,但大多数人只是在末尾添加它。

一个演示:

public class Test {
    public static void main(String[] args) {
        System.out.println("8:".matches("[,-:]+"));      // true: '8' is in the range ','..':'
        System.out.println("8:".matches("[,:-]+"));      // false: '8' does not match ',' or ':' or '-'
        System.out.println(",,-,:,:".matches("[,:-]+")); // true: all chars match ',' or ':' or '-'
    }
}

关于java - 如何在正则表达式中输入 ":"("colon")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6579921/

相关文章:

java - 对象实例化顺序和空指针异常

java - Spring batch writer节流

javascript - 如何替换不在 javascript 中的 href 标记内的 URL

javascript - 正则表达式 - 如何删除括号内的字符串?

javascript - 符号作为正则表达式中的可选字符

ruby - 用于验证长而复杂的 dns 目标的正则表达式

java - 在 Java 中显示 For-Loop 进度而不严重影响性能

java - 密集的 GC Activity 暂时关闭服务

java - 使用接口(interface)作为类型

python - 将正则表达式应用于 df 在新列中添加值