में * संशोधक के साथ नकारात्मक अग्रदर्शी अभिकथन मेरे पास है (मैं होने के लिए विश्वास) नकारात्मक अग्रदर्शी अभिकथन<@> *(?!QQQ)
है कि मैं अगर परीक्षण किया स्ट्रिंग एक <@>
रिक्त स्थान (शून्य सहित) के किसी भी संख्या के द्वारा पीछा किया है मिलान की उम्मीद और फिर QQQ
के बाद।पर्ल
फिर भी, यदि परीक्षण स्ट्रिंग <@> QQQ
नियमित अभिव्यक्ति मिलान है।
मैं यह देखने में असफल रहा कि यह मामला क्यों है और इस मामले पर किसी भी मदद की सराहना करेगा।
यहाँ एक परीक्षण स्क्रिप्ट
use warnings;
use strict;
my @strings = ('something <@> QQQ',
'something <@> RRR',
'something <@>QQQ' ,
'something <@>RRR');
print "$_\n" for map {$_ . " --> " . rep($_) } (@strings);
sub rep {
my $string = shift;
$string =~ s,<@> *(?!QQQ),at w/o ,;
$string =~ s,<@> *QQQ,at w/ QQQ,;
return $string;
}
है यह प्रिंट
something <@> QQQ --> something at w/o QQQ
something <@> RRR --> something at w/o RRR
something <@>QQQ --> something at w/ QQQ
something <@>RRR --> something at w/o RRR
और मैं पहली पंक्ति something <@> QQQ --> something at w/ QQQ
होने की उम्मीद है चाहते हैं।
'(? = \ एस)' होना चाहिए (? = [^]) '(यदि अगला वर्ण एक टैब है)। असल में, यह '(?!)' होना चाहिए (यदि यह स्ट्रिंग का अंत है)। – ikegami
पकड़ और संपादित करने के लिए धन्यवाद, @ikegami। '*' –