Blackhacker نشر 17 يناير 2016 أرسل تقرير نشر 17 يناير 2016 لو فرضنا أن لدي السلسلة النصية التالية 'gfgfdAAA1234ZZZuijjk' وأريد استخراج جزء 1234 وكل ما أعرفه أن هناك AAA قبل الرقم وZZZ بعده، فما الطريقة الصحيحة لفعل ذلك؟مثال على ما أريده:echo "$STRING" | sed -e "s|.*AAA\(.*\)ZZZ.*|\1|" اقتباس
0 هشام رزق الله نشر 17 يناير 2016 أرسل تقرير نشر 17 يناير 2016 يوجد عدة طرق في لغة بايثون لفعل ذلك، بعضها باستخدام التعابير النمطية والآخر فبدونها، فمثلا يمكنك استخدام دوال مكتبة التعابير النمطية للبحث عن AAA و ZZZ واستخراج ما بينها كما في المثال التالي:import re text = 'gfgfdAAA1234ZZZuijjk' m = re.search('AAA(.+?)ZZZ', text) if m: found = m.group(1) # found: 1234أو يمكنك تطوير المثال السابق قليلا باستخدام try except كما في المثال التالي:import re text = 'gfgfdAAA1234ZZZuijjk' try: found = re.search('AAA(.+?)ZZZ', text).group(1) except AttributeError: # AAA, ZZZ not found in the original string found = '' # apply your error handling # found: 1234وإذا لم ترغب باستخدام التعابير النمطية فيمكنك في هذه الحالة استخدام دوال المدمج في بايثون مثل دالة find كما في المثال التالي: >>> s = 'gfgfdAAA1234ZZZuijjk' >>> start = s.find('AAA') + 3 >>> end = s.find('ZZZ', start) >>> s[start:end] '1234' اقتباس
السؤال
Blackhacker
لو فرضنا أن لدي السلسلة النصية التالية 'gfgfdAAA1234ZZZuijjk' وأريد استخراج جزء 1234 وكل ما أعرفه أن هناك AAA قبل الرقم وZZZ بعده، فما الطريقة الصحيحة لفعل ذلك؟
مثال على ما أريده:
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.