如何用java编写更复杂的regexp?
我想遵守以下规则: 不以空格“”开头,不超过一个“.”,不以“.”开头,不以“.”结尾,不?/\:;在文件中如何用java编写更复杂的regexp?,java,regex,Java,Regex,我想遵守以下规则: 不以空格“”开头,不超过一个“.”,不以“.”开头,不以“.”结尾,不?/\:;在文件中 public static void Invalid(String[] filename){ for(String s: filename){ String u = s; try { u = new String(s.getBytes(), "UTF-8"); System.out.println(u); } cat
public static void Invalid(String[] filename){
for(String s: filename){
String u = s;
try {
u = new String(s.getBytes(), "UTF-8");
System.out.println(u);
} catch (Exception e) {
e.printStackTrace();
}
u=u.replaceAll("[.$]", " ");//.{2,}\\?
u = u.replaceAll("\\s+", "_");
System.out.println(s + " = " + u);
}
}
大体上很简单:
String[] name={"some?thing..txt."};
Invalid(name);
输出:
some?thing..txt.
some?thing..txt. = some_thing_txt_
如何进行验证?您可以使用此模式验证文件名:
^[^?/\\\\;: .][^?/\\\\;:.]*(?:\\.[^?/\\\\;:.]+)?$
注意:如果要允许空字符串,请在末尾添加|^$
不确定如何处理无效的文件名。您只是想验证文件名,还是实际更改文件名以符合您的规则?将其更改为u例如,我只想将无效文件名更改为有效文件名,因此现在替换为u字符