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

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

  • Comment on Re^4: RegEx for OpenOffice::OODoc as in $doc->selectElementsByContent()

Replies are listed 'Best First'.
Re^5: RegEx for OpenOffice::OODoc as in $doc->selectElementsByContent()
by stevieb (Canon) on Jun 03, 2016 at 18:12 UTC

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

      Yes! It works!

      It's not entirely clear to me why I need the surrounding parenthesis, but it works none-the-less.

      Your answer is another reason why I love Perl. There are so many people that are willing to help when there is an issue. Sometimes the solution comes from the developer of the package, while other times it comes from someone like yourself. In any event, Perl is a wonderful language, repository and community.

      Thanks so much for the support, it is genuinely appreciated.

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

        It's not entirely clear to me why I need the surrounding parenthesis

        The (?options:pattern) syntax is normally used in a larger regex to apply options to just a part of the whole expression:

        /The (?i:internet)/

        applies case-insensitivity to just "internet", but not "The"

        Most Perl regex options can be used this way.

        The reason I decided on Perl many moons ago, is because I 'listened' on numerous newsgroups, email lists and forums, and Perl had the most friendly (yet straight to your face) attitude, and that continues to this day.

        I'm the type who is never afraid to admit when I'm wrong or when I've made a mistake. If someone has a better method for something, I'll change my whole thought process based on that if it makes logical sense.

        PerlMonks (and the email lists, IRC etc for Perl) are always straight up and helpful. I love to help, but I also know that there is an infinite amount of knowledge I can still learn. This is evident in this thread alone.

        I like friendly places, at the same time, I like getting (even harsh) feedback/criticism. If you want to learn, this is a great place, and you'll be in good company.