re.search slashes

pyluke user at example.net
Sat Feb 4 13:58:10 EST 2006


Scott David Daniels wrote:
> pyluke wrote:
>> I'm parsing LaTeX document and want to find lines with equations 
>> blocked by "\[" and "\]", but not other instances of "\[" like "a & b 
>> & c \\[5pt]"
>> so, in short, I was to match "\[" but not "\\]" ....  I've tried:
>> check_eq = re.compile('(?!\%\s*)\\\\\[')
>  > check_eq.search(line)
>  > this works in finding the "\[" but also the "\\["
> 
> If you are parsing with regular expressions, you are running a marathon.
> If you are doing regular expressions without raw strings, you are running
> a marathon barefoot.
> 
> Notice:  len('(?!\%\s*)\\\\\[') == 13
>          len(r'(?!\%\s*)\\\\\[') == 15
> 
>> so I would think this would work
>> check_eq = re.compile('(?![\%\s*\\\\])\\\\\[')
>> check_eq.search(line)
>>
>> but it doesn't.  Any tips?
> Give us examples that should work and that should not (test cases),
> and the proper results of those tests.  Don't make people trying to
> help you guess about anything you know.
> 
> --Scott David Daniels
> scott.daniels at acm.org

Alright, I'll try to clarify.  I'm taking a tex file and modifying some 
of the content.  I want to be able to identify a block like the following:

\[
   \nabla \cdot u = 0
\]


I don't want to find the following

\begin{tabular}{c c}
   a & b \\[4pt]
   1 & 2 \\[3pt]
\end{tabular}


When I search a line for the first block by looking for "\[", I find it. 
  The problem is, that this also find the second block due to the "\\[".

I'm not sure what you mean by running a marathon.  I do follow your 
statement on raw strings, but that doesn't seem to be the problem.  The 
difference in your length example above is just from the two escaped 
slashes...   not sure what my point is...

Thanks
Lou



More information about the Python-list mailing list