On Sat, Sep 24, 2011 at 01:03:15AM -0700, Rick Gordon wrote:
> How can I set up a grep search that will repeat looping through the document 
> until all instances have been processed?
> 
> For instance, say I've set up markers (« and ») around target source strings, 
> and want to process thos strings to remove any characters that are not ASCII, 
> numeric, space, or hyphen. Something like:
> 
> FIND: 
>       (?<=«)(.*?)[^- A-Za-z0-9«»]+?(.*?)(?=»)
> 
> CHANGE TO:
>       \1\2
> 
> How can I keep it looping until no more instances are found?

As you've found, you can't do a loop inside a loop with a single grep.
Instead of repeating the grep manually until no matches are found, I would
use a Unix Filter.  Here's a Perl script that does it:

#!perl -p

s{(«)([^»]+)(»)}{my $x = $2; $x =~ tr,A-Za-z0-9 -,,cd; "$1$x$3"}ge;

__END__

This matches each occurence of «...», and then removes the unwanted
characters within each match.

Ronald

-- 
You received this message because you are subscribed to the 
"BBEdit Talk" discussion group on Google Groups.
To post to this group, send email to bbedit@googlegroups.com
To unsubscribe from this group, send email to
bbedit+unsubscr...@googlegroups.com
For more options, visit this group at
<http://groups.google.com/group/bbedit?hl=en>
If you have a feature request or would like to report a problem, 
please email "supp...@barebones.com" rather than posting to the group.
Follow @bbedit on Twitter: <http://www.twitter.com/bbedit>

Reply via email to