جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
مجله موفقیت عرشیانی ها رو بخون و نظربده تا تو هم برنده بشی لینک ثبت نام
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

چگونه می توانم تمام کوتیشن هایی را انتخاب کنم که قبل و بعدشان فاصله نیست ؟


2
0
1583

این الگوی فعلی منه:

([^\s])"([^\s])

این مثال رو در نظر بگیرید لطفا:

$str = 'this i"s a "test" word i"s"s';

اگه الگوی بالا رو روش اجرا کنیم و اونو با $1$2 جایگزین کنیم، میبینیم که خروجی به این شکل میشه:

$str = 'this is a "test" word is"s';

در حالی که این خروجی مد نظر منه:

$str = 'this is a "test" word iss';

میبینید؟ تمام " هایی که قبل و بعدشون هیچ فاصله ای نیست رو می خوام حذف کنم. یعنی می خوام "هایی که قبل یا بعدشون فاصله هست باقی بمونن توی رشته. کسی می دونه چگونه می تونم این کار رو انجام بدم با ریجکس regex ؟ راستی زبان سمت سرورم هم پی اچ پی php است. مرسی

علمی پی-اچ-پی عبارات-باقاعده کامپیوتر
سوال شده در سعید مرادی
1933 امتیاز

500 کاراکتر باقی مانده

1 جواب

5

وقتی که شما کاراکتر بعد از " را match می کنید در واقع دارید به موتور این فرمان را می دهید که آن را consume کن و این یعنی این کاراکتر در تکرار بعدی لحاظ نمی شود. به تکرار اول نگاه کنید:

i"s"s
^^^ ریجکس شما این سه کاراکتر را میگیرد

ولی در تکرار بعدی:

i"s"s
   ^^ از دابل کوتیشین مارک شروع می کند

برای همین، هر چند به نظر می آید این دابل کوت هم باید جزیی از نتایج باشد و توسط ریجکس شما match شود این اتفاق نمی افتد چون کاراکتر قبل از آن در تکرار قبلی استفاده شده است. به همین دلیل شما کافی است دومین capturing group خود را به یک lookahead مثبت تبدیل کنید:

(\S)"(?=\S)

و هنگام انجام یک جایگذاری توسط preg_replace رشته ی جایگذاری را $1 قرار دهید. یا می توانید هر دو گروه را به دو lookaround مرتبط تبدیل کنید:

(?<=\S)"(?=\S)

و هنگام جایگذاری توسط preg_replace رشته ی جایگذاری را خالی قرار دهید:

$str = preg_replace('~(?<=\S)"(?=\S)~', '', $str);

نکته: در PCRE ریجکس [^\s] همان \S است.

جواب داده شده در محمد آقانبی
196 امتیاز


درسته استفاده از lookahead بهترین گزینه هست در اینجا .. خیلی جالبه که من هیچوقت نمی تونم lookahead و lookbehind و negativeهاشون رو یاد بگیرم متاسفانه :-( ــ سعید مرادی در 6 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


وب سایت لام تا کام جهت نمایش استاندارد و کاربردی در تمامی نمایشگر ها بهینه شده است.

تبلیغات توضیحی


عرشیان از کجا شروع کنم ؟
تغییر و تحول با استاد سید محمد عرشیانفر

تبلیغات تصویری


کپی