:
(“冒号”)在正则表达式中有特殊含义,但我需要按原样使用,如 [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/