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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: regex با grep (حل شد)  (دفعات بازدید: 1151 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Droid

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
regex با grep (حل شد)
« : 14 بهمن 1394، 05:16 ب‌ظ »
سلام
یه متن دارم که با regex قسمتی از اون رو میخوام انتخاب کنم، بصورت آنلاین نوشتمش ولی با grep که تست میکنم هیچ خروجی نمیده  ](*,) نمونه آنلاین برای مشاهده

توی ترمینال هم این شکلی تست میکنم:
cat text | egrep "(?<=application: label=')(.+?)(?=')"یا این جوری:
egrep "(?<=application: label=')(.+?)(?=')" text
چرا اینجوریه؟  :'(
« آخرین ویرایش: 15 بهمن 1394، 07:51 ق‌ظ توسط Droid »

آفلاین 藤沼

  • Sr. Member
  • *
  • ارسال: 414
  • جنسیت : پسر
پاسخ : regex با grep
« پاسخ #1 : 14 بهمن 1394، 07:15 ب‌ظ »
دستور زیر همتا رو همراه با خط مربوط برمی‌گردونه:
grep -P "(?<=application: label=')(.+?)(?=')"اگر می‌خوای فقط همتا رو برگردونه باید پرچم o- رو هم اضافه کنی:
grep -Po "(?<=application: label=')(.+?)(?=')"
نکته: =>? (Lookbehind) درون Regex استاندارد نیست برای همین باید از Regex پرل استفاده کنی و
به‌نظر من برای اینجور عبارت‌های Regex بهتره از زبون‌های برنامه‌نویسی استفاده کنی (مخصوصاً پرل و جاواسکریپت)

آفلاین Droid

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : regex با grep
« پاسخ #2 : 14 بهمن 1394، 09:44 ب‌ظ »
خیلی ممنون، الان خروجی داد، دارم یه اسکریپت مینویسم دیگه مجبورم از grep استفاده کنم.