in reply to Re^3: greedy subexpression between two nongreedy ones
in thread greedy subexpression between two nongreedy ones
I see now my problem statement was a little sloppy: I failed to use the same sample text in my first two examples. Namely, I inadvertently omitted the trailing comma in the first example.
And sure enough, the answer above (or rather, the three variations on the answer) works on the incorrect example, but still fails on the correct one.
works either way when the "cd" appears between the first two anchors, but if it doesn't:$ echo ,abcdefg,abcdefg | perl -pe 's/,(?:.*?(cd))?.*?,/=$1=/' =cd=abcdefg $ echo ,abcdefg,abcdefg, | perl -pe 's/,(?:.*?(cd))?.*?,/=$1=/' =cd=abcdefg,
it gives me what I'm looking for only when the final "," is missing. With it, the expression goes back to running past the anchor and stealing from the next blob of text.$ echo ,abcefg,abcdefg | perl -pe 's/,(?:.*?(cd))?.*?,/=$1=/' ==abcdefg $ echo ,abcefg,abcdefg, | perl -pe 's/,(?:.*?(cd))?.*?,/=$1=/' =cd=
I need to study the answer below to see if it does what I need, but I had high hopes for the ones above, because I like their simplicity. :-)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: greedy subexpression between two nongreedy ones
by Anonymous Monk on Jun 02, 2015 at 20:43 UTC | |
by raygun (Scribe) on Jun 03, 2015 at 01:26 UTC | |
|
Re^5: greedy subexpression between two nongreedy ones
by Anonymous Monk on Jun 02, 2015 at 21:10 UTC |