Mehta, Perdeep wrote:
> Hi All,
>
> I'm beginner to pattern matching in Perl and was writing a code to parse a
> string. I tried pretty hard to extract the words that are of interest from a
> string but had no luck.
>
> Here is all-in-one-line string that I want to parse:
> $string = "biological process|mitosis|IEA|GO:0007067|MGD|na|biological
> process|cell cycle|IEA|GO:0007049|MGD|na|cellular
> component|intracellular|IEA|GO:0005622|MGD|na|molecular function|protein
> tyrosine phosphatase|IEA|GO:0004725|MGD|na|biological process|M phase of
> mitotic cell cycle|IEA|GO:0000087|MGD|na|biological process|protein amino
> acid dephosphorylation|IEA|GO:0006470|MGD|na";
>
> I want to extract recursively all words delimited by two pipes ( | ) that
> follow a specific pattern like "process" or "component". For example, I want
> mitosis, cell cycle, M phase of mitotic cell cycles, and protein amino acid
> dephosphorylation, extracted that are associated with the pattern "process".
> I tried several combinations of the following code but it gets only one word
> or everything or nothing at all.
>
> while ($string =~ /process(\S+(?!\|)(\s\S+)*)/g) {
> print "\tbiological process\t$1\n";
> }
>
> Correction to this code or an alternative suggestion is highly appreciated.
This should handle the situation above:
while ($string =~ /process\s*\|([^|]+)\|/g) {
print "\tbiological process\t$1\n";
}
--
,-/- __ _ _ $Bill Luebkert ICQ=14439852
(_/ / ) // // DBE Collectibles Mailto:[EMAIL PROTECTED]
/ ) /--< o // // http://dbecoll.tripod.com/ (Free site for Perl)
-/-' /___/_<_</_</_ Castle of Medieval Myth & Magic http://www.todbe.com/
_______________________________________________
Perl-Unix-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs