如何检查源路径是否有可用的正则表达式/通配符?

How to check if the source path has regex / wildcard available?

用户可以使用通配符或正则表达式提供任何路径。如果他们提供,我需要确定它不是完整的静态路径。

var sourcePath: Array(String) = Array("/user/Orders/201507{2[7-9],3[0-1]}*")

我正在编写下面的代码,我想我需要检查所有字符,例如 ? { ^ 等。 有没有更好的方法?

if (sourcePath.trim.toLowerCase().indexOf("*") > 0) 
{
  println("Source path has wildcard/regex")
}
else
{ 
  println("it is a static path, having no wildcard or regex")
}

更正数组初始化和您执行的操作后,您的代码将按以下方式生成解决方案:

var sourcePath: Array(String) = Array("/user/Orders/201507{2[7-9],3[0-1]}*") 

for(path <- sourcePath){

    if( path.trim.toLowerCase().indexOf("*") > 0 ) {
        println("source path has wildcard/regex")
    }

    else {
        println("it is a static path, having no wildcard or regex")
    }
}

输出:

source path has wildcard/regex

还有其他方法可以执行与上述相同的任务。下面提供了其中一些:

使用正则表达式:

import scala.util.matching.Regex 

val pattern = new Regex("[*]")    //the regex/wildcard you want to check

for(path <- sourcePath){

    if( (pattern findAllIn path).mkString("").length > 0 ) {
        println("Source path has wildcard/regex")
    }

    else {
        println("it is a static path, having no wildcard or regex")
    }
}

使用匹配():

for(path <- sourcePath){

    if( path.matches(".*/*") ) {  
        //Here,'.*' is required syntax and '/' is an escape character in this case
        println("Source Path has wildcard/regex")
    }

    else {
        println("it is a static path, having no wildcard or regex")
    }
}

如果您正在寻找更好的方法来执行此操作,字符串函数(优化)在大多数情况下比正则表达式执行得更好。因此,在这种情况下,您可以继续使用 indexOf() 或 matches()。

您还可以参考以下几种额外的方式。

Scala check if string contains no special chars