home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 February / CHIPCD_02_2002.iso / Internet / Macromedia ColdFusion Server 5 / coldfusion-50-win-us.exe / data1.cab / Examples / CFDOCS / snippets / refind.cfm < prev    next >
Encoding:
Text File  |  2001-06-13  |  3.7 KB  |  89 lines

  1. <!--- This example shows the use of REFind --->
  2.  
  3. <HTML>
  4.  
  5. <HEAD>
  6. <TITLE>
  7. REFind Example
  8. </TITLE>
  9. </HEAD>
  10.  
  11. <BASEFONT FACE="Arial, Helvetica" SIZE=2>
  12. <BODY  bgcolor="#FFFFD5">
  13.  
  14. <H3>REFind Example</H3>
  15.  
  16. <P>This example demonstrates the use of the REFind function with and without the <i>returnsubexpressions</i> parameter set to True.</P> 
  17.  
  18. If you do not use the <i>returnsubexpressions</i> parameter, REFind returns the position of the first occurrence of a regular expression in a string starting from the specified position.  Returns 0 if no occurrences are found.
  19. </P>
  20.  
  21. <P>REFind("a+c+", "abcaaccdd"):    
  22. <CFOUTPUT>#REFind("a+c+", "abcaaccdd")#</CFOUTPUT></P>
  23. <P>REFind("a+c*", "abcaaccdd"):    
  24. <CFOUTPUT>#REFind("a+c*", "abcaaccdd")#</CFOUTPUT></P>
  25. <P>REFind("[[:upper:]]", "abcaacCDD"):    
  26. <CFOUTPUT>#REFind("[[:upper:]]", "abcaacCDD")#</CFOUTPUT></P>
  27. <P>REFind("[\?&]rep=", "report.cfm?rep=1234&u=5"):    <CFOUTPUT>#REFind("[\?&]rep=", "report.cfm?rep=1234&u=5")#</CFOUTPUT>
  28. </P>
  29. <!--- Use REFind with 1 as startPos and returnMatchedSubexpressions = 
  30.     TRUE --->
  31. <HR size="2" color="#0000A0">
  32.  
  33. <P>If you do use the <i>returnssubexpression</i> parameter, REFind 
  34. returns the position and length of the first occurrence of a regular expression in a string 
  35. starting from the specified position. The position and length variables are stored in a structure. 
  36. In order to access the position and length information, you must use the keys 
  37. <i>pos</i> and <i>len</i>, respectively.</P>
  38.  
  39. <CFSET teststring ="The cat in the hat hat came back!">
  40. <P>The string in which the function is to search is: <CFOUTPUT><b>#teststring#</b></CFOUTPUT>.</P>
  41. <P>The first call to REFind to search this string is: 
  42. <b>REFind("[[:alpha:]]+",testString,1,"TRUE")</b></P>
  43. <P>This function returns a structure that contains two arrays: pos and len.</P>
  44. <P>In order to create this structure you can use a CFSET statement, for example:</P>
  45. <CFSET st = REFind("[[:alpha:]]+",testString,1,"TRUE")>
  46. <CFSET st = REFind("[[:alpha:]]+",testString,1,"TRUE")>
  47. <P>
  48.     <CFOUTPUT>
  49.     The number of elements in each array: #ArrayLen(st.pos)#.
  50.     </CFOUTPUT>
  51. </P>
  52. <P><b>The number of elements in the pos and len arrays will always be one if you 
  53. do not use parentheses to denote subexpressions in the regular expression.</b></P>
  54. <P>The value of st.pos[1] is: <CFOUTPUT>#st.pos[1]#.</CFOUTPUT></P>
  55. <P>The value of st.len[1] is: <CFOUTPUT>#st.len[1]#.</CFOUTPUT></P>
  56. <P>
  57.     <CFOUTPUT>
  58.     Substring is <b>[#Mid(testString,st.pos[1],st.len[1])#]</B>
  59.     </CFOUTPUT>
  60. </P>
  61.  
  62. <HR size="2" color="#0000A0">
  63.  
  64. <P>However, if you use parentheses to denote subexpressions in the regular 
  65. expression, you will find that the first element contains the position and length 
  66. of the first instance of the whole expression. The position and length of the 
  67. first instance of each subexpression within will be included in additional array 
  68. elements.</P>
  69.  
  70. <P>For example: <CFSET st1 = REFind("([[:alpha:]]+)[ ]+(\1)",testString,1,"TRUE")></P>
  71.  
  72. <CFSET st1 = REFind("([[:alpha:]]+)[ ]+(\1)",testString,1,"TRUE")>
  73.  
  74. <P>The number of elements in each array is <CFOUTPUT>#ArrayLen(st1.pos)#</CFOUTPUT>.</P>
  75.  
  76. <P>First whole expression match; position is 
  77. <CFOUTPUT>
  78. #st1.pos[1]#; length is #st1.len[1]#; 
  79. whole expression match is <B>[#Mid(testString,st1.pos[1],st1.len[1])#]</B>
  80. </CFOUTPUT></P>
  81.  
  82. <P>Subsequent elements of the arrays provide the position and length of the first instance of each parenthesized subexpression therein.</P>
  83.  <CFLOOP index="i" from="2" to="#ArrayLen(st1.pos)#">
  84.     <p><CFOUTPUT>Position is #st1.pos[i]#; Length is #st1.len[i]#; Substring is <B>[#Mid(testString,st1.pos[i],st1.len[i])#]</B></CFOUTPUT></p>
  85. </CFLOOP><BR>   
  86.  
  87. </BODY>
  88.  
  89. </HTML>