如何在正则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中有特殊含义。