Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
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
Replies are listed 'Best First'.
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 rifling through the Monastery: (12)
As of 2015-09-04 15:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred temperature scale is:










    Results (139 votes), past polls