Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #38088
| From | Daniele Futtorovic <da.futt.news@laposte.net> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: regex replaceAll? |
| Date | 2018-03-01 20:29 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <p79ka7$enj$1@dont-email.me> (permalink) |
| References | <4a800440-39fe-4684-8369-e6a4e6b9d79f@googlegroups.com> |
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
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