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

کمک و پشتیبانی => انجمن عمومی => نویسنده: سید مسعود امامیان در 27 بهمن 1391، 10:16 ب‌ظ

عنوان: تکرار در regexp (حل شد.)
ارسال شده توسط: سید مسعود امامیان در 27 بهمن 1391، 10:16 ب‌ظ
سلام دوستان

در یک پرونده چطوری می توان چند کلمه متوالی رو سرچ کرد ؟ برای مثال:
در یک پرونده ایی که 3تا کلمه ی test هست به این صورت :
نقل‌قول
test test test

اینجور که پیداست باید با این دستور پیدا بشه :
egrep -i "(test) \2"  address file
که خطا میده !
نقل‌قول
Invalid back reference

روش های مختلفی هست ولی با back ref می خوام انجام بشه .
عنوان: پاسخ : تکرار در regexp
ارسال شده توسط: سید مسعود امامیان در 27 بهمن 1391، 10:28 ب‌ظ
با :
egrep -i "\<(test) \2\>" address file
هم تست کردم نشد !
عنوان: پاسخ : تکرار در regexp
ارسال شده توسط: doomhammer65ir در 27 بهمن 1391، 10:46 ب‌ظ
میخوای نخستین رخداد یک الگو رو بیابی ؟ :
http://lmgtfy.com/?q=regex+first+occurence+of+word
عنوان: پاسخ : تکرار در regexp
ارسال شده توسط: سید مسعود امامیان در 27 بهمن 1391، 11:01 ب‌ظ
نه دیگه !

الان وقتی بجای 2 ، 1 بذارین :
egrep -i "\<(test) \1\>" address file
در خروجی علاوه بر testی که پیدا می کنه یک test دیگه هم پیدا می کنه!
نقل‌قول
test test

ولی وقتی 1 رو به 2 تغییر میدی انتظار میره که 3تا test پیدا کنه ! که خطایی که قبلا گفتم ظاهر میشه !
عنوان: پاسخ : تکرار در regexp
ارسال شده توسط: nixoeen در 27 بهمن 1391، 11:09 ب‌ظ
egrep -i "(test ){2}" file
توجه کنید که آخرین test هم باید یک فضای خالی بعد از خودش داشته باشه.
عنوان: پاسخ : تکرار در regexp
ارسال شده توسط: سید مسعود امامیان در 27 بهمن 1391، 11:14 ب‌ظ
بله درسته nixoeen جان و من هم اشاره کردم با روش های مختلف میشه
که یکیش همین quantifierی هست که شما مثال زدید ولی با back reference
نمی دونم چرا خروجی داده نمیشه !

روش حل مساله رو نمی خوام، صرفا جهت یادگیری می خوام بدونم .
عنوان: پاسخ : تکرار در regexp
ارسال شده توسط: nixoeen در 27 بهمن 1391، 11:18 ب‌ظ
با Back Reference اینجوری می‌شه:
egrep -i "(test )\1\1" file

اون ۱ تعداد تکرار نیست، مشخص می‌کنه که کدوم Pattern قبلی استفاده بشه. در اینجا تنها یک Pattern وجود داره، در نتیجه 2\ کلا اشتباهه.
عنوان: پاسخ : تکرار در regexp
ارسال شده توسط: سید مسعود امامیان در 27 بهمن 1391، 11:23 ب‌ظ
بسیار ممنونم .
عنوان: پاسخ : تکرار در regexp (حل شد.)
ارسال شده توسط: سید مسعود امامیان در 30 بهمن 1391، 06:07 ب‌ظ
گفتم تاپیک جدا نزنم،

به نظرتون این برای بیرون کشیدن تمام آدرس های مختلف سایت خوبه ؟ :
"\<(http://)?(https://)?(www)?(\.)?[^ ]*\.([a-z]{1,6})?([.a-z]{1,6})?\>"

مثلا انواع مختلف آدرس ها :
http://test.dom
www.test.dom
https://www.test.dom
و...