:("冒号")在regexp中有特殊含义,但我需要按原样使用它,就像[A-Za-z0-9.,-:]*.我试图逃避它,但这不起作用[A-Za-z0-9.,-\:]*
Bar*_*ers 100
在大多数正则表达式实现(包括Java)中,:没有特殊含义,无论是在字符类的内部还是外部.
您的问题很可能是由于-您在班级中充当范围运算符的事实:
[A-Za-z0-9.,-:]*
Run Code Online (Sandbox Code Playgroud)
where ,-:匹配','和之间的所有ascii字符':'.请注意,它仍然匹配文字':'!
试试这个:
[A-Za-z0-9.,:-]*
Run Code Online (Sandbox Code Playgroud)
通过放置-在类的开头或结尾,它与文字匹配"-".正如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 '-'
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
冒号在字符类中没有特殊意义,不需要转义。根据PHP regex docs,字符类中唯一需要转义的字符如下:
除了
\,-,^(在开始处)和终止符之外的所有非字母数字字符]在字符类中都是非特殊的,但如果它们被转义也没有坏处。
有关 Java 正则表达式的更多信息,请参阅文档。
| 归档时间: |
|
| 查看次数: |
99104 次 |
| 最近记录: |