On 18.01.2011 22:02, Ronald J Kimball wrote:
> On Tue, Jan 18, 2011 at 01:29:50PM -0600, Christopher Stone wrote:
>> Hey Folks,
>>
>> I've been looking at positive and negative assertions until my head is 
>> spinning.  :)
>>
>> What I want to do is find the entirety of line 1 but *not* line 2:
>>
>> ./Address Book.app
>> ./Address Book.app/Contents/CodeResources.app
>>
>> So I want to find a line that ends with ".app" but it cannot contain ".app" 
>> except at the end.
>>
> 
> Here's the approach I usually take for this kind of task:
> 
> ^(?>(?:(?!\.app).)*)\.app$
> 
> (?:(?!\.app).)* matches a substring that doesn't contain ".app".  It does
> this by checking whether the next part of the string is ".app"; if it's
> not, it matches one character, and repeats.
> 
> (?>...) prevents the regex from backtracking into its subexpression once it
> matches.  We know that if the regex doesn't get to the end of the string,
> backtracking isn't going to help.
> 
> 
> But I also thought of a simpler approach in this case:
> 
> ^(?!.*\.app.*\.app).*\.app$
> 
> That one uses a negative lookahead to make sure the string doesn't contain
> .app twice, and then matches if it contains .app at the end of the string.
> 
> Ronald
> 


Hello all!


Did I oversaw something? This looks little bit like an overkill. Would
it not be sufficient, to search for an and of line with grep:

\./Address Book\.app$

Or if it is not at the end of line, probable with a word boundary:

\./Address Book\.app\b


Best greetings from Munich


marek

-- 
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