当前位置:  开发笔记 > 编程语言 > 正文

正则表达式中的转义路径分隔符

如何解决《正则表达式中的转义路径分隔符》经验,为你挑选了2个好方法。

我需要编写一个正则表达式来查找匹配的javascript文件

js.js

例如,它应该适用于:

c:\ mysite\js\common.js(Windows)

/var/www/mysite/js/common.js(UNIX)

问题是Windows中的文件分隔符未正确转义:

pattern = Pattern.compile(
     "^(.+?)" + 
     File.separator +
     "js" +
     File.separator +
     "(.+?).js$" );

投掷

java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence

有没有办法使用适用于Windows和UNIX系统的通用正则表达式?



1> Tomalak..:

是否Pattern.quote(File.separator)做的伎俩?

编辑:从Java 1.5或更高版本开始提供.对于1.4,您只需要转义文件分隔符char:

"\\" + File.separator

转义标点符号不会破坏任何内容,但无条件地转义字母或数字会将它们更改为其特殊含义或导致PatternSyntaxException.(感谢Alan M在评论中指出这一点!)



2> Alan Moore..:

有没有办法使用适用于Windows和UNIX系统的通用正则表达式?

是的,只需使用匹配两种分隔符的正则表达式.

pattern = Pattern.compile(
    "^(.+?)" + 
    "[/\\\\]" +
    "js" +
    "[/\\\\]" +
    "(.+?)\\.js$" );

它是安全的,因为Windows和Unix都不允许文件或目录名中的那些字符.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有