stregex question [message #67222] |
Tue, 21 July 2009 09:37  |
wlandsman
Messages: 743 Registered: June 2000
|
Senior Member |
|
|
I'd like to find the first "e" in a string that is not next to
another "e"
The solution
stregex(s,"e[^e]|$") ;"e" followed by not "e" or at the end of the
line
doesn't work for the string st = 'see me' because it will find the
second "e" in "see"
The soluton
stregex(s,"e{1}") ;Find one occurrence of "e"
also finds the first "e" in "see" (Two occurrences is also one
occurrence)
In Perl it seems that one would use the "lookahead" option, but that
doesn't seem to be available in stregex().
(Actually I am looking for the first quote that is not part of a
double quote, but I wanted to keep the example syntax simple.)
Thanks, --Wayne
|
|
|
Re: stregex question [message #67469 is a reply to message #67222] |
Tue, 21 July 2009 12:06  |
Vince Hradil
Messages: 574 Registered: December 1999
|
Senior Member |
|
|
On Jul 21, 12:58 pm, wlandsman <wlands...@gmail.com> wrote:
> Mike,
>
>> IDL> pos = stregex(s, '([^e]e[^e])|(^e[^e])|(^e$)|([^e]e$)')
>> IDL> pos += strmid(s, pos, 1) ne 'e'
>
> Thanks for the quick reply. For my own reference when I go back to
> google this answer, the above code is testing 4 possibilities
>
> [^e]e[^e] - "e" surrounded by non-"e"
> (^e[^e]) - "e" at beginning of string followed by non-"e"
> (^e$) - Single character string with value "e"
> ([^e]e$) - - "e" at the end of the string preceded by a non-"e"
>
> In the first and last case (testing a preceding character) one needs
> to add 1 to the position found. --Wayne
Ouch! my head hurts...
|
|
|