Gui*_*ido 11 java regex escaping
我需要编写一个正则表达式来查找匹配的javascript文件
<anypath><slash>js<slash><anything>.js
Run Code Online (Sandbox Code Playgroud)
例如,它应该适用于:
问题是Windows中的文件分隔符未正确转义:
pattern = Pattern.compile(
"^(.+?)" +
File.separator +
"js" +
File.separator +
"(.+?).js$" );
Run Code Online (Sandbox Code Playgroud)
投掷
java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence
Run Code Online (Sandbox Code Playgroud)
有没有办法使用适用于Windows和UNIX系统的通用正则表达式?
Tom*_*lak 13
是否Pattern.quote(File.separator)
做的伎俩?
编辑:从Java 1.5或更高版本开始提供.对于1.4,您只需要转义文件分隔符char:
"\\" + File.separator
Run Code Online (Sandbox Code Playgroud)
转义标点符号不会破坏任何内容,但无条件地转义字母或数字会将它们更改为其特殊含义或导致PatternSyntaxException.(感谢Alan M在评论中指出这一点!)
有没有办法使用适用于Windows和UNIX系统的通用正则表达式?
是的,只需使用匹配两种分隔符的正则表达式.
pattern = Pattern.compile(
"^(.+?)" +
"[/\\\\]" +
"js" +
"[/\\\\]" +
"(.+?)\\.js$" );
Run Code Online (Sandbox Code Playgroud)
它是安全的,因为Windows和Unix都不允许文件或目录名中的那些字符.
归档时间: |
|
查看次数: |
16716 次 |
最近记录: |