Forum Discussion

supreme_86715's avatar
Icon for Nimbostratus rankNimbostratus
Jun 13, 2012

help with iRules Regex scan statement.

I've been trying to scan the following URI inorder to extract specific fields. The URI is





i need a regex for a scan statement that will extract the data fields "comtype", "37.777125" and "-122.419644"



so far i've tried this, but keep getting "variable is not assigned by any conversion specifiers"



set testuri "/mapper/time_map/datatype/comtype/37.777125/-122.419644/13/1309/3164.json?v=1&degree_buffer=0.002&callback=jQuery1720814429080274308_1339544764657&_=1339544771741"



scan $testuri {%[^/]%[^/]%[^/]%[^/]%[^/]%[^?]} one two three four five six seven eight



any suggestions?

4 Replies

  • Why not just use split and then extract the field via lindex?



    % set testuri "/mapper/time_map/datatype/comtype/37.777125/-122.419644/13/1309/3164.json?v=1°ree_buffer=0.002&callback=jQuery1720814429080274308_1339544764657&_=1339544771741"





    % set split [split $testuri /]


    {} mapper time_map datatype comtype 37.777125 -122.419644 13 1309 3164.json?v=1°ree_buffer=0.002&callback=jQuery1720814429080274308_1339544764657&_=1339544771741



    % puts "[lrange $split 4 6]"


    comtype 37.777125 -122.419644


    % puts "[lindex $split 4]"





    The scan statement will still work, but it seem it has troubles with the / being the first character, so this will work:




    % scan $testuri {/%*[^/]/%*[^/]/%*[^/]/%[^/]/%[^/]/%[^/]} one two three




    % puts $one




    % puts $two




    % puts $three




  • Nice work MiLK_MaN. I think the single scan command should be more efficient than split with lindex, etc.



  • Thank MiLK_MaN this works. Btw what editor/shell are you using the check test the irules?
  • Just tclsh in a Mint Debian virtual machine on my home ESX server :)