in reply to Regexp Substitution Problem!!

I wasn't quite sure what you wanted but if I understand you rightly then this should help. From what I can tell, you want to grab anything A~~~stuff~A and remove it from the string and print out what you removed. This snippet will do that for you:

$sentence = " he PP study VB A~~~language~A NP and CC play VB A~~~game~A NP ."; $_ = $sentence; while (m/(A~~~([^~]+)~A)/g) { # debug print print $1 . "\t" . $2 . "\n"; # Remove our match push @parts, $2; $_ =~ s/$1//g; } $sentence = $_; # print the bits we took out foreach (@parts) { print $_ . "\n"; } # print the new sentence print $sentence . "\n";


Hope that helps - one problem you did have was with your original match of A~~~(.*)~A. This greediness would have caused you real problems :P

For example, if your sentence had been
$sentence = "A~~~one~A and A~~~two~A"; $sentence =~ m/A~~~(.*)~A/g; print $1;
Then you are going to get unexpected results. You can use the non greedy quantifier ? to help out here or you can change the regex syntax.

HTH :)