انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: Droid در 14 بهمن 1394، 05:16 ب‌ظ

عنوان: regex با grep (حل شد)
ارسال شده توسط: Droid در 14 بهمن 1394، 05:16 ب‌ظ
سلام
یه متن دارم که با regex قسمتی از اون رو میخوام انتخاب کنم، بصورت آنلاین نوشتمش ولی با grep که تست میکنم هیچ خروجی نمیده  ](*,) نمونه آنلاین برای مشاهده (https://regex101.com/r/zS3yB3/1)

توی ترمینال هم این شکلی تست میکنم:
cat text | egrep "(?<=application: label=')(.+?)(?=')"یا این جوری:
egrep "(?<=application: label=')(.+?)(?=')" text
چرا اینجوریه؟  :'(
عنوان: پاسخ : regex با grep
ارسال شده توسط: 藤沼 در 14 بهمن 1394، 07:15 ب‌ظ
دستور زیر همتا رو همراه با خط مربوط برمی‌گردونه:
grep -P "(?<=application: label=')(.+?)(?=')"اگر می‌خوای فقط همتا رو برگردونه باید پرچم o- رو هم اضافه کنی:
grep -Po "(?<=application: label=')(.+?)(?=')"
نکته: =>? (Lookbehind) درون Regex استاندارد نیست برای همین باید از Regex پرل استفاده کنی و
به‌نظر من برای اینجور عبارت‌های Regex بهتره از زبون‌های برنامه‌نویسی استفاده کنی (مخصوصاً پرل و جاواسکریپت)
عنوان: پاسخ : regex با grep
ارسال شده توسط: Droid در 14 بهمن 1394، 09:44 ب‌ظ
خیلی ممنون، الان خروجی داد، دارم یه اسکریپت مینویسم دیگه مجبورم از grep استفاده کنم.