除く2つのコロンの間の値を取得するには:は正規表現が、私はこのような文字列持つコロン
something:POST:/some/path
を今私は、文字列からだけではPOSTを取りたいです。私はこの正規表現を使用してこれを行いました
:([a-zA-Z]+):
しかし、これは私にコロンと一緒に値を与えます。
:POST:
が、私は同じことを一致し、次のようにそれが交換するこの
POST
私のコードが必要になります:つまり、私はこれを取得
String ss = "something:POST:/some/path/";
Pattern pattern = Pattern.compile(":([a-zA-Z]+):");
Matcher matcher = pattern.matcher(ss);
if (matcher.find()) {
System.out.println(matcher.group());
ss = ss.replaceFirst(":([a-zA-Z]+):", "*");
}
System.out.println(ss);
EDIT:
私はを使用したくないので、lookahead/lookbehind正規表現を使用することに決めましたたとえば、:*:
のようなコロンでを入力します。これは私の最終的な解決策です。
String s = "something:POST:/some/path/";
String regex = "(?<=:)[a-zA-Z]+(?=:)";
Matcher matcher = Pattern.compile(regex).matcher(s);
if (matcher.find()) {
s = s.replaceFirst(matcher.group(), "*");
System.out.println("replaced: " + s);
}
else {
System.out.println("not replaced: " + s);
}
グラブグループ1つの値 - 'matcher.group(1)' –
これは動作します私はマッチャーを印刷します。しかし、私は正規表現を使用して文字列でそれを置き換えることができますか? – v1shnu
両方の方法を示す私の答えを見てください。 –