是否可以匹配术语中的任意数量的特定字符?

时间:2016-07-27 13:58:03

标签: java regex

我有一些我想要匹配的用户输入但是我删除了'^-等特殊字符。我想知道是否可以提供一组特定字符来匹配或“忽视”。因此,如果列表包含"^-"且术语为PRMP^^R---^M将匹配,但PROM不会,因为O不在“允许“人物。

这是否可以使用正则表达式?

1 个答案:

答案 0 :(得分:3)

使用Java 8,您可以使用String.join将术语中的单个字符与表示一个或多个特殊字符的字符组连接起来,例如[^-]*,但使用正则表达式特殊字符转义

String term = "PRM";
String special = "^-";

String delimiter = "[" + Pattern.quote(special) + "]*";
String regex = String.join(delimiter, term.split(""));

System.out.println(Pattern.matches(regex, "PROM"));      // --> false
System.out.println(Pattern.matches(regex, "P^^R---^M")); // --> true

或者,您也可以replaceAll ""使用System.out.println(term.equals("PROM".replaceAll(delimiter, ""))); // --> false System.out.println(term.equals("P^^R---^M".replaceAll(delimiter, ""))); // --> true 的特殊字符并检查是否相等:

function ZipAndDeleteFile([string] $file, [string] $saveLocation)
{
    $command = [string]::Format("`"{0}`" a -ep -df `"$saveLocation`" `"$file`"", $winrarPath);
    iex "& $command";
}