Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用java编写更复杂的regexp?_Java_Regex - Fatal编程技术网

如何用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字符