انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: Droid در 14 بهمن 1394، 05:16 بظ
-
سلام
یه متن دارم که با regex قسمتی از اون رو میخوام انتخاب کنم، بصورت آنلاین نوشتمش ولی با grep که تست میکنم هیچ خروجی نمیده ](*,) نمونه آنلاین برای مشاهده (https://regex101.com/r/zS3yB3/1)
توی ترمینال هم این شکلی تست میکنم:
cat text | egrep "(?<=application: label=')(.+?)(?=')"
یا این جوری:
egrep "(?<=application: label=')(.+?)(?=')" text
چرا اینجوریه؟ :'(
-
دستور زیر همتا رو همراه با خط مربوط برمیگردونه:
grep -P "(?<=application: label=')(.+?)(?=')"
اگر میخوای فقط همتا رو برگردونه باید پرچم o- رو هم اضافه کنی:
grep -Po "(?<=application: label=')(.+?)(?=')"
نکته: =>? (Lookbehind) درون Regex استاندارد نیست برای همین باید از Regex پرل استفاده کنی و
بهنظر من برای اینجور عبارتهای Regex بهتره از زبونهای برنامهنویسی استفاده کنی (مخصوصاً پرل و جاواسکریپت)
-
خیلی ممنون، الان خروجی داد، دارم یه اسکریپت مینویسم دیگه مجبورم از grep استفاده کنم.