in reply to Re: RegEx for OpenOffice::OODoc as in $doc->selectElementsByContent()
in thread RegEx for OpenOffice::OODoc as in $doc->selectElementsByContent()

Hey choroba, I think the documentation for the methods in the Text library is simply separate from the code.

Without being able to test, I came to the same conclusion... stringify the regex:

$doc->selectElementsByContent('faith');

However, I can't figure out how to include the case-insensitive modifier (/i) into such a thing. Can you shed some light?

Replies are listed 'Best First'.
Re^3: RegEx for OpenOffice::OODoc as in $doc->selectElementsByContent()
by choroba (Cardinal) on Jun 03, 2016 at 15:37 UTC
    > Can you shed some light?

    I've updated the answer.

    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
      The real problem is making the search case insensitive (i.e., the "i" modifier). I tried your approach and get this as an error message:
      Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE i:faith/ at D:/Apps (x86)/Perl32/site/lib/OpenOffice/OODoc/XPath.pm line 339.
      One nasty approach would be to preprocess the search term and add [] around each letter with upper and lower case versions of the letter. As I said, nasty.

      Thanks,
        EigenFunctions
        OpSys: Win7 Professional/Home Premium x64 Service Pack 1

        It looks like you may have missed the parens in the example choroba posted above.

        # fail (no parens in regex assignment) perl -wMstrict -E 'my $x="Faith"; my $r=q{?i:faith}; say "ok" if $x =~ + /$r/' Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HER +E i:faith/ at -e line 1. # success perl -wMstrict -E 'my $x="Faith"; my $r=q{(?i:faith)}; say "ok" if $x +=~ /$r/' ok

        So instead of '?i:faith' which I'm guessing you have, try '(?i:faith)'