Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #38088

Re: regex replaceAll?

Path csiph.com!eternal-september.org!feeder.eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From Daniele Futtorovic <da.futt.news@laposte.net>
Newsgroups comp.lang.java.programmer
Subject Re: regex replaceAll?
Date Thu, 1 Mar 2018 20:29:03 +0100
Organization A noiseless patient Spider
Lines 61
Message-ID <p79ka7$enj$1@dont-email.me> (permalink)
References <4a800440-39fe-4684-8369-e6a4e6b9d79f@googlegroups.com>
Mime-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 7bit
Injection-Date Thu, 1 Mar 2018 19:29:11 -0000 (UTC)
Injection-Info reader02.eternal-september.org; posting-host="1baef884b5bb9d3643422d367ccb23e9"; logging-data="15091"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19BYZb2mDVcIdSky30qikzS"
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0
In-Reply-To <4a800440-39fe-4684-8369-e6a4e6b9d79f@googlegroups.com>
X-Antivirus-Status Clean
Content-Language en-GB
X-Antivirus AVG (VPS 180228-6, 02/28/2018), Outbound message
Cancel-Lock sha1:c5/YKoOK+He6LnyGbkTpyAr4bxk=
Xref csiph.com comp.lang.java.programmer:38088

Show key headers only | View raw


On 2018-03-01 15:19, Eric Douglas wrote:
> I hate to ask because I feel like I'm close and missing something stupid, but how do you do this?

Do what?

> <snip />

> Now I'm trying to replace the nth occurrence of a string.

^This?

Here's one way:
    public static CharSequence replaceEveryNthOccurrenceOf(
        CharSequence input, String match, int nthMatch, String replaceWith
    )
    {
        if( nthMatch <= 0 ){
            throw new IllegalArgumentException("nthMatch must be positive");
        }

        Pattern p = Pattern.compile( match );
        Matcher m = p.matcher( input );
        StringBuffer sb = new StringBuffer();
        boolean found = true;
        do {
            for( int ii = nthMatch; ii --> 0 && (found = m.find()); ){
                m.appendReplacement( sb, ii == 0 ? replaceWith : "$0" );
            }
        }
        while( found );

        m.appendTail( sb );

        return sb;
    }

Note also: how to replace every nth _consecutive_ occurrence of String
(regex) "match" in the input "input" with replacement "rep":
        String input, match, rep;
        int n;
        input.replaceAll( "((?:" + match + "){" + (n - 1) + "})(" +
match + ")", "$1" + rep );

HTH,

-- 
DF.
> The best I can find matches the nth sequential.
> 
> int n = 2;
> String repl = "b";
>  out = in.replaceAll("([.]*["+repl+"]{"+(n-1)+"}[.]*)"+repl,"$1_");
> System.out.println(out);
> 
> Result:
> "abc aa b_ cc a b_ ccc   a b c abc aa b_b cc babacaca"
> 
> What I'm looking for:
> "abc aa _b cc a _b ccc   a _ c abc aa _b_ cc ba_acaca"
> 

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-01 06:19 -0800
  Re: regex replaceAll? Andreas Leitgeb <avl@logic.at> - 2018-03-01 19:03 +0000
    Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-01 12:15 -0800
      Re: regex replaceAll? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-01 21:51 +0100
        Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-01 13:36 -0800
          Re: regex replaceAll? Arne Vajhøj <arne@vajhoej.dk> - 2018-03-01 16:59 -0500
      Re: regex replaceAll? Andreas Leitgeb <avl@logic.at> - 2018-03-01 21:55 +0000
        Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-01 14:00 -0800
          Re: regex replaceAll? Andreas Leitgeb <avl@logic.at> - 2018-03-01 22:31 +0000
            Re: regex replaceAll? Arne Vajhøj <arne@vajhoej.dk> - 2018-03-01 17:52 -0500
              Re: regex replaceAll? Andreas Leitgeb <avl@logic.at> - 2018-03-02 00:14 +0000
            Re: regex replaceAll? Kiwi User <martin@mydomain.invalid> - 2018-03-02 00:43 +0000
              Re: regex replaceAll? Arne Vajhøj <arne@vajhoej.dk> - 2018-03-01 19:49 -0500
                Re: regex replaceAll? Kiwi User <martin@mydomain.invalid> - 2018-03-02 01:33 +0000
                Re: regex replaceAll? Arne Vajhøj <arne@vajhoej.dk> - 2018-03-02 13:00 -0500
                Re: regex replaceAll? Kiwi User <martin@mydomain.invalid> - 2018-03-03 20:07 +0000
            Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-02 05:40 -0800
              Re: regex replaceAll? Andreas Leitgeb <avl@logic.at> - 2018-03-02 17:46 +0000
                Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-02 10:38 -0800
                Re: regex replaceAll? Andreas Leitgeb <avl@logic.at> - 2018-03-02 20:15 +0000
                Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-02 12:43 -0800
                Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-02 12:58 -0800
                Re: regex replaceAll? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-03 00:06 +0100
  Re: regex replaceAll? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-01 20:29 +0100
    Re: regex replaceAll? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-01 20:30 +0100
    Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-01 12:28 -0800
      Re: regex replaceAll? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-01 21:40 +0100
    Re: regex replaceAll? Eric Douglas <e.d.programmer@gmail.com> - 2018-03-01 13:52 -0800
      Re: regex replaceAll? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-02 02:25 +0100

csiph-web