[cfaussie] Re: RegEx Backreferences...

2003-11-19 Thread Spike
Something like this should do it for you:

cfset regex = (\d+)\s+(\d{4}\s+\d{4})
cfset str = 07 1234 5678
cfset stResult = reFindNoCase(regex,str,1,true)

cfdump var=#stResult#

cfset areacode = mid(str,stResult.pos[2],stResult.len[2])
cfset number = mid(str,stResult.pos[3],stResult.len[3])
cfoutput(#areacode#) #number#/cfoutput

If you return sub-expressions, the resulting structure will contain 
multiple entries. The first element in the pos and len arrays will be 
the match for the whole regex. The subsequent entries will be the 
matches for the sub-expressions.

There should be n+1 entries in those arrays. Where n is the number of 
sub-expressions in your regex.

Spike

Taco Fleur wrote:

Morning!

How do I return back references? (maybe I need another coffee, but I 
just don't see it)

The regex
(\d+)\s+(\d{4}\s+\d{4})
07 1234 5678

I know I can reference to the area code by
07 = \1
I know I can reference to the telephone number by
1234 5678 = \2
But how in godsname do I output it?

I could NOT just do
cfoutput
#\1# #\2#
/cfoutput
All I can think of is using reReplace() but surely there must be some 
other way!?



*Taco Fleur
07 3535 5072*
Tell me and I will forget
Show me and I will remember
Teach me and I will learn
---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to 
[EMAIL PROTECTED]
MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004
--
Stephen Milligan
Software Architect for http://www.bestrates.com.au
MSN: [EMAIL PROTECTED]


---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]
MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004


[cfaussie] Re: RegEx Backreferences...

2003-11-19 Thread Taco Fleur
off course, cheers!

-Original Message-
From: Spike [mailto:[EMAIL PROTECTED]
Sent: Thursday, 20 November 2003 9:41 AM
To: CFAussie Mailing List
Subject: [cfaussie] Re: RegEx Backreferences...


Something like this should do it for you:

cfset regex = (\d+)\s+(\d{4}\s+\d{4})
cfset str = 07 1234 5678

cfset stResult = reFindNoCase(regex,str,1,true)

cfdump var=#stResult#

cfset areacode = mid(str,stResult.pos[2],stResult.len[2])
cfset number = mid(str,stResult.pos[3],stResult.len[3])

cfoutput(#areacode#) #number#/cfoutput

If you return sub-expressions, the resulting structure will contain 
multiple entries. The first element in the pos and len arrays will be 
the match for the whole regex. The subsequent entries will be the 
matches for the sub-expressions.

There should be n+1 entries in those arrays. Where n is the number of 
sub-expressions in your regex.

Spike


Taco Fleur wrote:

 Morning!
 
 How do I return back references? (maybe I need another coffee, but I 
 just don't see it)
 
 The regex
 (\d+)\s+(\d{4}\s+\d{4})
 
 07 1234 5678
 
 I know I can reference to the area code by
 07 = \1
 I know I can reference to the telephone number by
 1234 5678 = \2
 
 But how in godsname do I output it?
 
 I could NOT just do
 cfoutput
 #\1# #\2#
 /cfoutput
 
 All I can think of is using reReplace() but surely there must be some 
 other way!?
 
 
 
 *Taco Fleur
 07 3535 5072*
 Tell me and I will forget
 Show me and I will remember
 Teach me and I will learn
 
 ---
 You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
 To unsubscribe send a blank email to 
 [EMAIL PROTECTED]
 MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
 http://www.mxdu.com/ + 24-25 February, 2004

-- 
Stephen Milligan
Software Architect for http://www.bestrates.com.au
MSN: [EMAIL PROTECTED]



---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]

MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004

---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]

MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004


[cfaussie] Re: RegEx Backreferences...

2003-11-19 Thread Taco Fleur
The example I showed was just an example, really the telephone number could be anything

+31 07 3433 3243
07 3433 2111
4345 3434
4455


-Original Message-
From: Matthew Walker [mailto:[EMAIL PROTECTED]
Sent: Thursday, 20 November 2003 10:25 AM
To: CFAussie Mailing List
Subject: [cfaussie] Re: RegEx Backreferences...


 It's so that I know pos[3] will always return the area code.

But the area code is the first subexpression starting at pos[2] . . . ?

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:bounce-cfaussie-
 [EMAIL PROTECTED] On Behalf Of Taco Fleur
 Sent: Thursday, 20 November 2003 11:56 a.m.
 To: CFAussie Mailing List
 Subject: [cfaussie] Re: RegEx Backreferences...
 
 ok next one...
 
 Can you do something like
 
 (\+\d+|select nothing here, but populate structure)
 
 Reason for doing this is so that
 pos[2] len[2] will exists, if that makes any sense?
 
 It's so that I know pos[3] will always return the area code.
 
 -Original Message-
 From: Spike [mailto:[EMAIL PROTECTED]
 Sent: Thursday, 20 November 2003 9:41 AM
 To: CFAussie Mailing List
 Subject: [cfaussie] Re: RegEx Backreferences...
 
 
 Something like this should do it for you:
 
 cfset regex = (\d+)\s+(\d{4}\s+\d{4})
 cfset str = 07 1234 5678
 
 cfset stResult = reFindNoCase(regex,str,1,true)
 
 cfdump var=#stResult#
 
 cfset areacode = mid(str,stResult.pos[2],stResult.len[2])
 cfset number = mid(str,stResult.pos[3],stResult.len[3])
 
 cfoutput(#areacode#) #number#/cfoutput
 
 If you return sub-expressions, the resulting structure will contain
 multiple entries. The first element in the pos and len arrays will be
 the match for the whole regex. The subsequent entries will be the
 matches for the sub-expressions.
 
 There should be n+1 entries in those arrays. Where n is the number of
 sub-expressions in your regex.
 
 Spike
 
 
 Taco Fleur wrote:
 
  Morning!
 
  How do I return back references? (maybe I need another coffee, but I
  just don't see it)
 
  The regex
  (\d+)\s+(\d{4}\s+\d{4})
 
  07 1234 5678
 
  I know I can reference to the area code by
  07 = \1
  I know I can reference to the telephone number by
  1234 5678 = \2
 
  But how in godsname do I output it?
 
  I could NOT just do
  cfoutput
  #\1# #\2#
  /cfoutput
 
  All I can think of is using reReplace() but surely there must be some
  other way!?
 
 
 
  *Taco Fleur
  07 3535 5072*
  Tell me and I will forget
  Show me and I will remember
  Teach me and I will learn
 
  ---
  You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
  To unsubscribe send a blank email to
  [EMAIL PROTECTED]
  MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
  http://www.mxdu.com/ + 24-25 February, 2004
 
 --
 Stephen Milligan
 Software Architect for http://www.bestrates.com.au
 MSN: [EMAIL PROTECTED]
 
 
 
 ---
 You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
 To unsubscribe send a blank email to leave-cfaussie-
 [EMAIL PROTECTED]
 
 MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
 http://www.mxdu.com/ + 24-25 February, 2004
 
 ---
 You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
 To unsubscribe send a blank email to leave-cfaussie-
 [EMAIL PROTECTED]
 
 MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
 http://www.mxdu.com/ + 24-25 February, 2004




---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]

MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004

---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]

MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004