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