in reply to Re^2: Parsing Strings
in thread Parsing Strings

Now you've asked a question that begs for a reply of "lazy question." But, I suggest you direct your attention to the regex docs, with special attention to quantifiers (of the sort I illustrated.

At your command prompt: perldoc perlre<c>, <c>perldoc perlrequick and perldoc perlretut and similarly for other questions about perl (perldoc perldoc is a good place to start).


Questions containing the words "doesn't work" (or their moral equivalent) will usually get a downvote from me unless accompanied by:
  1. code
  2. verbatim error and/or warning messages
  3. a coherent explanation of what "doesn't work actually means.

Replies are listed 'Best First'.
Re^4: Parsing Strings
by doofus (Acolyte) on Mar 14, 2016 at 22:57 UTC
    Thank you for your honesty and I do appreciate your help. I figured out \((.*?)\){3} would make it work catching the 3rd (), but it'd drop anything with less than 3 (). The script simply needs to pick up the contain in the outermost () without knowing how many () are there.
    .A(B) .A((B)) .A(((B))) So, \((.*?)\){2} doesn't work for me tried \((.*?)\)+ but not working either....
    there must be a simpler way..... Anyone?

      OK, given the clarification that the number of parens will be unknown, the regex solution will require anchoring the last ")" to the end of the line (if that's not the case, you'll need to pursue a more complex regex-approach, or another (perhaps part of the List::... family?).

      <Update>: I misread a bit of your latest node: You have figured out ONE ASPECT of quantifiers. So read about them more deeply. Perl provides a mechanism for using a range... and that, combined with the hint below, should solve your problem.</Update>

      The references I gave earlier stand and I add the note that regexen permit use of a "$" sign as an anchor to the end of string. (NB: "string" and "line" don't necessarily mean the same thing, but if you have an expression with an unknown number of parens and (possibly) unknown number of lines or placements of the parens, go for a module designed to parse your specific data-format.

      Chew on that for a bit and as you do, read up on regexen. You'll learn more that way than asking multiple questions whose answers grow out of basic knowledge, such as can be acquired from perldoc, man pages, and, if necessary, additional tutorials, books, etc.