1

I have two input strings :

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

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

What I want is only the %7b3DES%7dFPvKTjGHUA3lD9Us70rfjQ== from both of the sample strings.

I tried by using the regex [a-zA-Z-]+-(.*) which works fine for the second input string.

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");
}
4

1 に答える 1

1

次のパターンは、提供されている限られた情報と例を使用して目的のグループに一致します。

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

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

最初はハイフンに一致し、次にすべての文字を ? のいずれかにグループ化します。または文字列の末尾。

2 番目は、可能な限り多くの文字とハイフンに一致し、その後に最小の文字列が続き、次の疑問符または文字列の末尾まで一致します。

ただし、このテキストに一致するものを書く方法は何十もあるので、これがあなたが望んでいたものかどうかはちょっと推測しています. これが目的でない場合は、何を達成しようとしているのかを詳しく説明してください。

于 2012-09-18T03:44:47.520 に答える