0

Java で、最初のインスタンスを除く特定の文字 (:) のすべてのインスタンスに一致する正規表現を見つけようとして、最初を除くすべてのインスタンスを何も置き換えたくない。

私がすることができます、

Pattern p = Pattern.compile(":");
Matcher m =  p.matcher(input);
String output = m.replaceAll("");

m.replaceFirst() もありますが、最初以外はすべて置き換えたいです。

4

5 に答える 5

5

単純なアプローチ:

String[] parts = str.split(":", 2);
str = parts[0] + ":" + parts[1].replaceAll(":", "");
于 2012-06-29T11:07:18.720 に答える
1

正規表現の置換には一致パターン\G((?!^).*?|[^:]*:.*?):を使用し、置換として最初のグループを使用します$1

ここで Perl の正規表現コードを参照してテストしてください。

于 2012-06-29T11:39:24.873 に答える
1
public static void main(String[] args) {
    String name ="1_2_3_4_5";
    int index = name.indexOf("_");
    String name1 = name.substring(index+1); 
    name1 = name1.replace("_", "#");

    System.out.println(name.substring(0,index+1)+ name1);
}
于 2012-06-29T11:39:58.637 に答える
0

正規表現を使用できます

String str1 = "A:B:C:D:E:F:G:H:I:J:K:L:M";
str1= str1.replaceAll("([:|_].*?):", "$1_");
str1= str1.replaceAll("([:|_].*?):", "$1_");

ここでは、最初に出力を置き換えるように正規表現を変更することはできません。実際には、最初にreplaceAllは、別の位置で「:」を「_」に置き換えます。

于 2012-06-29T11:33:46.953 に答える
0
if (matcher.find()) {
    String start = originalString.substring(0, matcher.end());
    matcher.reset(originalString.substring(matcher.end(), originalString.length()));
    replacedString = start + matcher.replaceAll("");
}
于 2014-05-29T07:32:52.180 に答える