use strict;
my $str = '<tr class="child "> <td>-12,777,460.8</td> <td>432.8</td> <td>-12,460.8</td> <td>-4.53</td> </tr> <tr class="child impair"> <td>2,389.0</td> <td>408.2</td> <td>2,389.0</td> <td>2.92</td> </tr> <tr class="child "> <td>2,395.6</td> <td>393.3</td> <td>2,395.6</td> <td>1.13</td> </tr> <tr class="child impair"> <td>2,357.4</td> <td>413.6</td> <td>2,357.4</td> <td>0.87</td> </tr> <tr class="child "> <td>2,465.6</td> <td>405.6</td> <td>2,465.6</td> <td>1.30</td> </tr> <tr class="child impair"> <td>2,519.0</td> <td>412.0</td> <td>2,519.0</td> <td>7.63</td> </tr> <tr class="child "> <td>2,300.2</td> <td>571.9</td> <td>2,300.2</td> <td>28.33</td> </tr> <tr class="child impair"> <td>2,241.3</td> <td>888.4</td> <td>2,241.3</td> <td>44.00</td> </tr> <tr class="child "> <td>2,196.2</td> <td>914.8</td> <td>2,196.2</td> <td>50.02</td> </tr> <tr class="child impair"> <td>2,243.7</td> <td>920.3</td> <td>2,243.7</td> <td>43.27</td> </tr> <tr class="child "> <td>2,279.8</td> <td>721.7</td> <td>2,279.8</td> <td>33.96</td> </tr> <tr class="child impair"> <td>2,283.4</td> <td>730.6</td> <td>2,283.4</td> <td>32.09</td> </tr> <tr class="child "> <td>2,389.2</td> <td>623.8</td> <td>2,389.2</td> <td>33.16</td> </tr> <tr class="child impair"> <td>2,290.2</td> <td>593.7</td> <td>2,290.2</td> <td>34.00</td> </tr> <tr class="child "> <td>2,222.2</td> <td>711.0</td> <td>2,222.2</td> <td>37.51</td> </tr> <tr class="child impair"> <td>2,200.4</td> <td>1,052.5</td> <td>2,200.4</td> <td>44.70</td> </tr> <tr class="child "> <td>2,202.8</td> <td>1,060.6</td> <td>2,202.8</td> <td>50.02</td> </tr> <tr class="child impair"> <td>2,135.9</td> <td>993.9</td> <td>2,135.9</td> <td>50.73</td> </tr> <tr class="child "> <td>2,177.7</td> <td>1,028.5</td> <td>2,177.7</td> <td>54.04</td> </tr> <tr class="child impair"> <td>2,092.6</td> <td>1,095.5</td> <td>2,092.6</td> <td>48.24</td> </tr> <tr class="child "> <td>1,980.3</td> <td>586.2</td> <td>1,980.3</td> <td>36.83</td> </tr> <tr class="child impair"> <td>2,029.0</td> <td>600.0</td> <td>2,029.0</td> <td>33.84</td> </tr> <tr class="child "> <td>1,995.1</td> <td>513.9</td> <td>1,995.1</td> <td>30.41</td> </tr> <tr class="child impair"> <td>1,990.6</td> <td>470.1</td> <td>1,990.6</td> <td>12.00</td> </tr>';
my $regex = qr/(?:-?(?:\d+?,)+)?-?\d+\.\d+/p;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html