#!/usr/bin/perl
use feature "say" ;
use strict;
use warnings;
my $content = "I am trying to capture this 1910.1024, this 1910.1024(a) and this 1910.1024(a)(3)." ;
if ( $content =~ m/([0-9]{4})\.([0-9]{4})/ ) {
( [ 0 - 9 ] { 4 } ) # $1 = First 4 digits
\. # Dot
( [ 0 - 9 ] { 4 } ) # $2 = Second 4 digits
( ?: \( ( \w + ) \) ) ? # (, $3 (first optional "word"), )
( ?: \( ( \w + ) \) ) ? # (, $4 (second optional "word"), )
} {
"<!!uf dp_ecfr29 29cfr$1x$2 #29cfr$1x$2" .
">$1.$2" .
"</a>"
} gxe;
say "$content\n " ;
} else {
say "Error" ;
}
IyEvdXNyL2Jpbi9wZXJsCnVzZSBmZWF0dXJlICJzYXkiOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpteSAkY29udGVudCA9ICJJIGFtIHRyeWluZyB0byBjYXB0dXJlIHRoaXMgMTkxMC4xMDI0LCAgdGhpcyAxOTEwLjEwMjQoYSkgYW5kICB0aGlzIDE5MTAuMTAyNChhKSgzKS4iOwppZigkY29udGVudCA9fiBtLyhbMC05XXs0fSlcLihbMC05XXs0fSkvKSB7CiAgICRjb250ZW50ID1+IHN7CiAgIAkgICAgKFswLTldezR9KSAgICAgICMgJDEgPSBGaXJzdCA0IGRpZ2l0cwogICAJICAgIFwuICAgICAgICAgICAgICAjIERvdAogICAJICAgIChbMC05XXs0fSkgICAgICAjICQyID0gU2Vjb25kIDQgZGlnaXRzCiAgIAkgICAgKD86XCgoXHcrKVwpKT8gICMgKCwgJDMgKGZpcnN0IG9wdGlvbmFsICJ3b3JkIiksICkKICAgCSAgICAoPzpcKChcdyspXCkpPyAgIyAoLCAkNCAoc2Vjb25kIG9wdGlvbmFsICJ3b3JkIiksICkKICAgIH17CiAgIAkJIjwhIXVmIGRwX2VjZnIyOSAyOWNmciQxeCQyICMyOWNmciQxeCQyIiAuCgkJKGRlZmluZWQoJDMpID8gInotJDMiIDogIiIpIC4gKGRlZmluZWQoJDQpID8gIi0kNCIgOiAiIikgLgoJCSI+JDEuJDIiIC4gCgkJKGRlZmluZWQoJDMpID8gIigkMykiIDogIiIpIC4gKGRlZmluZWQoJDQpID8gIigkNCkiIDogIiIpIC4gCgkJIjwvYT4iCiAgICB9Z3hlOwoJc2F5ICIkY29udGVudFxuIjsKfSBlbHNlIHsKICAgc2F5ICJFcnJvciI7Cn0KCg==