如何在正则expression式中键入“:”(“冒号”)?

: “冒号”)在正则expression式中有一个特殊的含义但是我需要像现在一样使用它,就像[A-Za-z0-9.,-:]*我试图逃避它,但是这不起作用[A-Za-z0-9.,-\:]*

在大多数正则expression式实现(包括Java的)中, :没有特殊的含义,既不在内部也不在外部。

你的问题很可能是由于这个事实-在你的class级中作为一个范围操作员:

 [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 '-' } } 

小心, -与正则expression式有特殊的意义。 在[]如果放置在最后,则可以毫无问题地放置它 。 在你的情况下,, ,-:被取为,:

冒号在angular色类中没有特别的意义,也不需要逃脱。 根据PHP正则expression式文档 ,字符类中唯一需要转义的字符如下:

除了\-^ (在开始处)和终止处以外的所有非字母数字字符在字符类中都是非特殊字符,但是如果它们被转义则不会造成危害。

有关Java正则expression式的更多信息,请参阅文档 。

使用\\:而不是\: .. \在javastring中有特殊含义。