Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: how to find what's not there with a regex?

by pbeckingham (Parson)
on Aug 24, 2005 at 13:42 UTC ( #486179=note: print w/ replies, xml ) Need Help??


in reply to how to find what's not there with a regex?

How about this:

#! /usr/bin/perl use strict; use warnings; while (<DATA>) { chomp; print "[$_]\n" for /\s*([^=]+\s+=\s+'[^']+'|\S+\s+=(?:\s+[^=]+)+(?:( +?=\s+\S+\s+=)|$))/msg; } __DATA__ xyz = 'some long exp' xyz = some long exp with no more than one +space separating parts a = b c d = e drsubc = agauss(0, 1, 3) delm1 = '0 + 0.045u*distm1' + delm2 = '0 + 0.07u*distm2' delm3 = '0 + 0.07u*distm3' + delm4 = '0 + 0.07u*distm4' delmt = '0 + + 0.07u*distmt' delml = '0.16u + 0.43u*distml' + delam = '0.32u + 0.86u*distam' dele1 = '0 + 0.2 +5u*diste1' dele2 = '0 + 0.25u*diste2' + delma = '0.16u + 0.6u*distma' pmsxt = 'npmsxt + 12.5 +u*dpmsxt' tih = 0.35u capct = '0.50u + + 0.13u*xdcapct' capcti = '0.55u + 0.13u*xdcapct' + m1t = '0.41u + 0.05u*xdm1t' m1ti = '0.36u + 0.05u*xdm1t' + m2t = '0.48u + 0.057u*dm2t' m3t = '0.4 +8u + 0.057u*dm3t' m4t = '0.48u + 0.057u*dm4t' + mtt = '0.48u + 0.057u*dmtt' qtt = '0.242u + +0.0202u*dqtt' htt = '0.242u + 0.0202u*dhtt' m +lt = '2.0u + 0.2u*dmlt' amt = '4.0u + 0.4u*dam +t' e1t = '3.0u + 0.5u*de1t' e2t = ' +4.0u + 0.5u*xde1mat' mat = '4.0u + 0.4u*dmat' + m1m2t = '0.35u + 0.05u*dm1m2t'
Generates the output:
[xyz = 'some long exp'] [xyz = some long exp with no more than one space separating parts] [a = b c] [d = e] [drsubc = agauss(0, 1, 3) ] [delm1 = '0 + 0.045u*distm1'] [delm2 = '0 + 0.07u*distm2'] [delm3 = '0 + 0.07u*distm3'] [delm4 = '0 + 0.07u*distm4'] [delmt = '0 + 0.07u*distmt'] [delml = '0.16u + 0.43u*distml'] [delam = '0.32u + 0.86u*distam'] [dele1 = '0 + 0.25u*diste1'] [dele2 = '0 + 0.25u*diste2'] [delma = '0.16u + 0.6u*distma'] [pmsxt = 'npmsxt + 12.5u*dpmsxt'] [tih = 0.35u ] [capct = '0.50u + 0.13u*xdcapct'] [capcti = '0.55u + 0.13u*xdcapct'] [m1t = '0.41u + 0.05u*xdm1t'] [m1ti = '0.36u + 0.05u*xdm1t'] [m2t = '0.48u + 0.057u*dm2t'] [m3t = '0.48u + 0.057u*dm3t'] [m4t = '0.48u + 0.057u*dm4t'] [mtt = '0.48u + 0.057u*dmtt'] [qtt = '0.242u + 0.0202u*dqtt'] [htt = '0.242u + 0.0202u*dhtt'] [mlt = '2.0u + 0.2u*dmlt'] [amt = '4.0u + 0.4u*damt'] [e1t = '3.0u + 0.5u*de1t'] [e2t = '4.0u + 0.5u*xde1mat'] [mat = '4.0u + 0.4u*dmat'] [m1m2t = '0.35u + 0.05u*dm1m2t']



pbeckingham - typist, perishable vertebrate.


Comment on Re: how to find what's not there with a regex?
Select or Download Code
Re^2: how to find what's not there with a regex?
by samizdat (Vicar) on Aug 24, 2005 at 13:51 UTC
    Almost. I think you're on the right track, because your solution's caught all but drsubc and tih correctly. Let me study what you've done, and thanks very much!

      Fixed the drsubc and tih.



      pbeckingham - typist, perishable vertebrate.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://486179]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2014-08-20 22:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (124 votes), past polls