正则表达式需要匹配两个样本字符串

时间:2012-09-18 00:19:14

标签: java regex

我有两个输入字符串:

this-is-a-sample-string-%7b3DES%7dFPvKTjGHUA3lD9Us70rfjQ==?Id=113690_2&Index=0&Referrer=IC

this-is-a-sample-string-%7b3DES%7dFPvKTjGHUA3lD9Us70rfjQ==

我想要的只是两个示例字符串中的%7b3DES%7dFPvKTjGHUA3lD9Us70rfjQ==

我尝试使用正则表达式[a-zA-Z-]+-(.*),它适用于第二个输入字符串。

String inputString = "this-is-a-sample-string-%7b3DES%7dFPvKTjGHUA3lD9Us70rfjQ==";
String regexString = "[a-zA-Z-]+-(.*)";

Pattern pattern = Pattern.compile(regexString);
Matcher matcher = pattern.matcher(inputString);

if(matcher.matches()) {
    System.out.println("--->" + matcher.group(1) + "<---");
} else {
    System.out.println("nope");
}

1 个答案:

答案 0 :(得分:1)

以下模式与所需的组匹配,并提供有限的信息和示例:

-([^-?]*)(?:\?|$)

.*-(.*?)(?:\?|$)

第一个匹配连字符然后将所有字符分组到?或者字符串的结尾。

第二个匹配尽可能多的字符和连字符,后跟最小的字符串到下一个问号或字符串的结尾。

有很多方法可以写出与本文相符的内容,所以我只是猜测这是不是你想要的。如果这不是你想要的,请详细说明你究竟想要完成什么。