Regex help needed...

Paul Dupuis paul at researchware.com
Sat Jan 30 15:17:48 EST 2016


I need some regex help.

I have a list that is of the form:
<number><tab><text><tab><numberCol1><tab><numberCol2>
i.e.
1    Testing    1,747    1,1,1,747
2    Testing    752,1800    1,752,1,1800
3    Testing    5398,5846    2,320,2,768
4    Testing    3,111.951,683.915,302.268,385.751  
 3,111.951,683.915,302.268,385.751

<numberCol2> can have a list of number in 1 of 2 formats:
A comma separated list of 4 integers, i.e.
<integer1>,<integer2>,<integer3>,<integer4>
OR
A comma separated list of 1 integer, followed by 4 decimal numbers, i.e.
<integer>,<decimal>,<decimal>,<decimal>,<decimal>

I need filter the lines of this list with a REGEX pattern to get lines
WHERE a value pPage matches certain places in <numberCol2>, specifically:
where pPage is equal to either <integer1> or <integer3> in the first
format(i.e. item 1 or item 3)
OR
where pPage is equal to <integer> in the second format(i.e. item 1)

So my code is:
put
"((.+\t"&pPage&",\d+,\d+,\d+)|(.+\t\d+,\d+,"&pPage&",\d+)|(.+\t"&pPage&",?[0-9]*\.?[0-9]+,?[0-9]*\.?[0-9]+,?[0-9]*\.?[0-9]+,?[0-9]*\.?[0-9]+))"
into tMatchPattern
filter lines of tList with regex pattern tMatchPattern
 
If pPage is 1 then I should get:
1    Testing    1,747    1,1,1,747
2    Testing    752,1800    1,752,1,1800
and I do. If pPage is 2 then I should get:
3    Testing    5398,5846    2,320,2,768
and I do. If pPage is 3 then I should get:
4    Testing    3,111.951,683.915,302.268,385.751  
 3,111.951,683.915,302.268,385.751
and I do. if pPage is 4 then I should get and empty list, and I do, but
when pPage is 5, I am expecting an empty list and I get
3    Testing    5398,5846    2,320,2,768

So something is wrong with my Regex, but I can not figure out what? It
looks like it is matching against <numberCol1> in the last case
(pPage=5) but it should not since there are only 2 items in the list
rather than 4 or 5.

I am using LiveCode 6.7.6





More information about the use-livecode mailing list