के डॉक्स जाँच करें, क्यों नहीं हम करते हैं? उद्धरण perlre,
$
: पंक्ति के अंत का मिलान करें (या अंत में न्यू लाइन से पहले)
को देखते हुए
\z
: मैच केवल स्ट्रिंग के अंत में
इसका मतलब है कि /^$/
के बराबर है /^\n?\z/
।
$ perl -E'$_ = ""; say /^$/ ||0, /^\n?\z/ ||0, /^\z/ ||0;'
111
$ perl -E'$_ = "\n"; say /^$/ ||0, /^\n?\z/ ||0, /^\z/ ||0;'
110
ध्यान दें कि /m
परिवर्तन क्या ^
और $
मैच। किसी भी नई लाइन से पहले और स्ट्रिंग के अंत में /m
, ^
किसी भी "लाइन" की शुरुआत में, और $
मैचों की शुरुआत में।
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /^/g'
matched at 0
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /$/g'
matched at 7
matched at 8
और/मी का उपयोग कर:
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /^/mg'
matched at 0
matched at 4 <-- new
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /$/mg'
matched at 3 <-- new
matched at 7
matched at 8
\A
, \Z
और \z
नहीं कर रहे 'टी /m
से प्रभावित:
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /\A/g'
matched at 0
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /\z/g'
matched at 8
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /\Z/g'
matched at 7
matched at 8
यह वही गलती है http://stackoverflow.com/q/10200057/8817 है बनाना भी :) –