নামযুক্ত নিয়মিত অভিব্যক্তি গোষ্ঠী "(? P <group_name> regexp)": "পি" কী বোঝায়?


178

পাইথনে, (?P<group_name>…) সিনট্যাক্সটি তার নামের সাথে মিলে যাওয়া স্ট্রিংটিকে উল্লেখ করতে দেয়:

>>> import re
>>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456')
>>> match.group('name')
'John'

"পি" কী বোঝায়? অফিসিয়াল ডকুমেন্টেশনে আমি কোনও ইঙ্গিত খুঁজে পাইনি ।

আমি কীভাবে আমার শিক্ষার্থীদের এই সিনট্যাক্সটি মনে রাখতে সহায়তা করব সে সম্পর্কে ধারণা পেতে চাই। "পি" কীসের জন্য দাঁড়ায় (বা তার পক্ষে দাঁড়াতে পারে) তা কার্যকর হবে Know


8
Pজন্য দাঁড়িয়েছে Placeholder
কেভ

1
@ কেভ: মনে হচ্ছে এর উত্তর হওয়া উচিত?
নিনজাগেকো

3
অনুমানগুলি যথাযথ হওয়ায়, আমি অনুমান করি যে কেন থম্পসন হিপ্পি সহানুভূতিশীল এবং "প্যাচৌলি" এর পক্ষে "পি"।
অ্যারোনস্টার্লিং

2
এই প্রশ্নটি "গোষ্ঠীগুলি" এর অধীনে স্ট্যাক ওভারফ্লো নিয়মিত এক্সপ্রেশন FAQ এ যুক্ত করা হয়েছে ।
aliteralmind 0

6
যাইহোক, আপনি যদি match.groups(একটি দিয়ে s) ব্যবহার করেন তবে আপনি নিঃশব্দে সমস্ত গোষ্ঠীর একটি গোছা পেয়ে যাবেন __- groups('name')=> ('John', '123456')যখন আপনি আসলে যা চেয়েছিলেন group('name')= = 'John' আমি আশা করি এটি কিছুটা সময় বাঁচিয়েছে।
szmoore

উত্তর:


262

যেহেতু আমরা সবাই অনুমান করছি, আমিও আমার তা দিতে পারি: আমি সবসময় ভেবেছিলাম এটি পাইথনের পক্ষে দাঁড়িয়েছে। এটি বেশ বোকা লাগতে পারে - পাইথনের জন্য পি কী ?! - তবে আমার প্রতিরক্ষার সাথে আমি এই থ্রেডটি অস্পষ্টভাবে মনে করেছি [জোর আমার]:

বিষয়: দাবী করা (? পি ...) রেজেক্সের সিনট্যাক্স এক্সটেনশনগুলি

থেকে: গুইডো ভ্যান রসম (গুই ... @ সিএনআরআই.আরস্টন.ভা.উইউএস)

তারিখ: 10 ডিসেম্বর, 1997 3:36:19 পিএম

পার্ল বিকাশকারীদের (পার্ল ভাষার বিকাশকারীদের) কাছে আমার একটি অস্বাভাবিক অনুরোধ রয়েছে। আমি আশা করি এটি (পার্ল 5-পোর্টার) সঠিক তালিকা। আমি পাইথন স্ট্রিং-সিগ সিসি করছি কারণ এটি এখানে কাজ করা বেশিরভাগ কাজের মূল কারণ।

আপনি সম্ভবত পাইথন সম্পর্কে সচেতন। আমি পাইথনের স্রষ্টা; আমি এই বছরের শেষের দিকে পাইথন 1.5 এর পরবর্তী একটি বড় সংস্করণ প্রকাশ করার পরিকল্পনা করছি। আমি আশা করি পাইথন এবং পার্ল আগামী বছরগুলিতে সহাবস্থান করতে পারে; উভয় ভাষার জন্য ক্রস পরাগায়ন ভাল হতে পারে। (আমি বিশ্বাস করি যে ল্যারি যখন পার্ল ৫-তে অবজেক্ট যুক্ত করেছিলেন তখন পাইথনকে ভাল চেহারা ছিল; ও'রেলি উভয় ভাষা সম্পর্কে বই প্রকাশ করে।)

আপনি জানেন যে, পাইথন 1.5 একটি নতুন নিয়মিত এক্সপ্রেশন মডিউল যুক্ত করেছে যা পার্লের সিনট্যাক্সের সাথে আরও ঘনিষ্ঠভাবে মেলে। পাইথনের সিনট্যাক্সের মধ্যে আমরা পারল সিনট্যাক্সের যতটা সম্ভব কাছাকাছি থাকার চেষ্টা করেছি। তবে, রেজেক্স সিনট্যাক্সের কিছু পাইথন-নির্দিষ্ট এক্সটেনশন রয়েছে, যা সমস্ত দিয়ে শুরু হয় (? পি। বর্তমানে তাদের মধ্যে দুটি রয়েছে:

(?P<foo>...)নিয়মিত গোষ্ঠীকরণের প্রথম বন্ধনীগুলির মতো, তবে
গ্রুপটির সাথে মিলিত পাঠ্যটি ম্যাচটি সম্পাদনের পরে, প্রতীকী দলের নাম "ফু" এর মাধ্যমে অ্যাক্সেসযোগ্য।

(?P=foo)"Foo" নামক গোষ্ঠীর সাথে মিলে যায় একই স্ট্রিংয়ের সাথে। \ 1, \ 2 ইত্যাদির সমতুল্য বাদে দলটি
নাম্বার দ্বারা উল্লেখ করা হয়, সংখ্যা হিসাবে নয়।

আমি আশা করি যে এই পাইথন-নির্দিষ্ট এক্সটেনশনটি পার্ল রেজেক্স সিনট্যাক্সের কোনও ভবিষ্যতের পার্ল এক্সটেনশনের সাথে বিরোধ করবে না। আপনার যদি (? পি) ব্যবহার করার পরিকল্পনা রয়েছে তবে দয়া করে আমাদের যত তাড়াতাড়ি সম্ভব তা জানুন যাতে আমরা বিরোধটি সমাধান করতে পারি Otherwise নইলে, ভাল লাগবে যদি (? পি সিনট্যাক্সটি পাইথন-নির্দিষ্ট সিনট্যাক্স এক্সটেনশনের জন্য স্থায়ীভাবে সংরক্ষিত থাকতে পারে Is এক্সটেনশানগুলির একধরণের রেজিস্ট্রি আছে?)

যার প্রতি ল্যারি ওয়াল জবাব দিয়েছে:

[...] এখন পর্যন্ত কোনও রেজিস্ট্রি নেই - বাইরের পার্ল-পোর্টারদের প্রথম অনুরোধ আপনার, সুতরাং এটি একটি দুর্দান্ত লো-ব্যান্ডউইথ ক্রিয়াকলাপ। (দুঃখিত, এটি গত সপ্তাহে আরও কম ছিল - আমি ইন্টারনেট ওয়ার্ল্ডে নিউইয়র্কের বাইরে ছিলাম))

যাইহোক, যতদূর আমি উদ্বিগ্ন, আপনি অবশ্যই আমার আশীর্বাদে 'পি' থাকতে পারেন। (স্পষ্টতই পার্লের এই মুহুর্তে 'পি' দরকার নেই: :-) [...]

সুতরাং আমি জানি না পি এর আসল পছন্দটি কী - প্যাটার্ন দ্বারা অনুপ্রাণিত হয়েছিল? স্থানধারক? পেঙ্গুইনদের? - তবে কেন আপনি সর্বদা এটি পাইথনের সাথে যুক্ত করেছেন তা আপনি বুঝতে পারবেন। যা বিবেচনা করে (১) আমি নিয়মিত মত প্রকাশ করতে পছন্দ করি না এবং যেখানেই সম্ভব এড়াতে চাই এবং (২) এই থ্রেডটি পনেরো বছর আগে ঘটেছিল, এটি একজাতীয় মতবিরোধ।


4
"পাইথন-নির্দিষ্ট এক্সটেনশন" সম্ভবত?
jmort253

50
বাহ, আপনি এখানে কিছু ভাল এবং historicalতিহাসিক তথ্য প্রাসঙ্গিক খুঁজে পেয়েছেন! গুইডোর পোস্ট সম্পর্কে আমার ব্যাখ্যাটি হ'ল "পি" "পাইথন-নির্দিষ্ট এক্সটেনশনস"।
এরিক হে লেবিগোট

1
হ্যাঁ, এটা আমার কাছে সুস্পষ্ট লাগে। সুতরাং এটি বিদ্রূপজনক যে পার্ল এবং পিসিআরই প্রাথমিকভাবে বাক্য গঠনটি অনুলিপি করেছিল, কেবল কারণ পাইথনই প্রথম কৃতিত্বের নামকরণ ক্যাপচারকে সমর্থন করে। তবে তারা (?<group_name>…)সিনট্যাক্সকেও সমর্থন করে যা সর্বাধিক জনপ্রিয় বলে মনে হয় - এমনকি জাভাও এখন এটি সমর্থন করে।
অ্যালান মুর

3
+1 এটি অন্যতম সেরা বিশ্রী উত্তর যা ভালভাবে রক্ষিত আছে :) is প্রথমদিকে, আমি ভেবেছিলাম এটি খুব বোকা। তবে শেষ পর্যন্ত আমি পুরোপুরি একমত হয়েছি।
সুমুদু

4
আমি ভালবাসি যে এমনকি পাইথনের স্রষ্টাও পার্ল জড়িত থাকার সময় উদ্ভট আরকেন সিনট্যাক্স ব্যবহার করেন এবং পার্ল সম্প্রদায় এটির সাথে পুরোপুরি ভাল। যদি আপনি পাইথনে পার্ল-নির্দিষ্ট এক্সটেনশন / সিনট্যাক্স যুক্ত করার চেষ্টা করেন তবে রাস্তায় রক্ত ​​থাকবে।
কীথ রিপলি

20

প্যাটার্ন! গ্রুপটি রেগেক্সে পরবর্তী ব্যবহারের জন্য একটি (উপ) প্যাটার্নটির নাম দেয়। এই জাতীয় দলগুলি কীভাবে ব্যবহৃত হয় সে সম্পর্কে বিশদ জানতে এখানে ডকুমেন্টেশন দেখুন ।


3
+1: এটি একটি ভাল মেমোনিক ডিভাইস: (?P<name>…)এটি "প্যাটার্ন name"। সবকিছুই একটি (?P<…>…)নিদর্শন , যদিও, একটি রিজেক্সেপে, তাই কেবল নিদর্শন হিসাবে গোষ্ঠীগুলির লেবেল করা এক ধরণের অদ্ভুত । এটি আমার শিক্ষার্থীদের জন্য, যদিও করবে। :)
এরিক হে লেবিগোট

1
@ ইওল ​​শিক্ষার্থীদের মিথ্যা জিনিস শেখায় না। আপনি যখন ভাবেন ঠিক তার চেয়ে নির্ভুলতার জন্য পৌঁছলে এগুলি আরও শক্ত হয়ে যায়। যেমন। কিছু, আমার জন্য, একাধিক বছর সময় লাগে 5। অদ্ভুতভাবে, এটিকে আনুষ্ঠানিকভাবে কথা বলতে উত্সাহ দেওয়া হয়, এটি সম্পর্কে সর্বদা খুব স্পষ্ট এবং স্পষ্ট থাকুন - যেমন। আপনার পূর্ববর্তী মন্তব্যটি সম্পূর্ণরূপে আপনার শিক্ষার্থীদের বলুন (সম্ভবত শেষ বাক্যটি সংশোধন করা উচিত;))
n611x007

5

পাইথন এক্সটেনশন। পাইথন ডকোস থেকে:

পার্ল বিকাশকারীগণ যে সমাধানটি বেছে নিয়েছিলেন তা হ'ল এক্সটেনশন সিনট্যাক্স হিসাবে (? ...) ব্যবহার করা। ? অবিলম্বে একটি প্রথম বন্ধনী একটি সিনট্যাক্স ত্রুটি কারণ? পুনরাবৃত্তি করার কিছুই নেই, সুতরাং এটি কোনও সামঞ্জস্যতা সমস্যার পরিচয় দেয় না। চরিত্রগুলি সঙ্গে সঙ্গে? কী এক্সটেনশনটি ব্যবহৃত হচ্ছে তা নির্দেশ করুন, সুতরাং (? = foo) হ'ল একটি জিনিস (একটি ইতিবাচক চেহারা) এবং (?: ফু) অন্যরকম কিছু (একটি এক্স-ক্যাপচারিং গ্রুপ যা স্যুব এক্সপ্রেসন ফু রয়েছে)।

পাইথন পার্লের বেশ কয়েকটি এক্সটেনশান সমর্থন করে এবং পারেলের এক্সটেনশন সিনট্যাক্সে একটি এক্সটেনশন সিনট্যাক্স যুক্ত করে। যদি প্রশ্ন চিহ্নের পরে প্রথম অক্ষরটি পি হয় তবে আপনি জানেন যে এটি একটি এক্সটেনশন যা পাইথনের সাথে নির্দিষ্ট

https://docs.python.org/3/howto/regex.html


ভাল বিক্ষোভ! এটি ডিএসএমের অনুভূতি নিশ্চিত করে।
এরিক ও লেবিগোট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.