جستوجو و جایگزینی با Regex
متن را با یک عبارت باقاعده بازنویسی کنید و پیش از اجرای آن روی فایلهای واقعی، نتیجه را ببینید.
جستوجو و جایگزینی آنلاین با Regex
جستوجو و جایگزینی با عبارت باقاعده یکی از سریعترین راههای پاکسازی متن است، و یکی از سادهترین راهها برای خراب کردن هزار سطر در یک لحظه. این صفحه آزمایشگر Regex را با یک نمونه آماده باز میکند: الگوی واژهٔ تکراری از کتابخانهٔ الگوها، یعنی \b(\w+)\s+\1\b، و جایگزین $1. جمله نمونه زیر نتیجه جایگزینی برمیگردد و همه کلمههای تکراریاش حذف شدهاند.
نمونه چطور کار میکند
(\w+) یک کلمه را میگیرد، \s+ با فاصله یا شکست سطر بعد از آن تطبیق میکند و \1 دوباره همان کلمه را میخواهد. \b در دو سر الگو نمیگذارد درون کلمههای بلندتر تطبیق رخ دهد، پس «the theory» دستنخورده میماند. با پرچم i، «This this» هم تکرار حساب میشود و $1 املای اول را نگه میدارد: «This this is a a typo» به «This is a typo» تبدیل میشود.
نشانههای جایگزینی
| نشانه | چه چیزی درج میکند |
|---|---|
$1، $2 | متن همان گروه شمارهدار |
$<name> | متن یک گروه نامدار، مثل (?<year>\d{4}) |
$& | کل تطبیق |
$` | همه چیز پیش از تطبیق |
$' | همه چیز پس از تطبیق |
$$ | یک علامت دلار واقعی |
پیش از جایگزینی انبوه، تست کنید
بیشتر فاجعههای جایگزینی از الگویی میآیند که بیش از آنچه میخواستید تطبیق میکند. یک نمونه نماینده، از جمله سطرهایی که نباید تغییر کنند، بچسبانید و پیش از اعتماد به نتیجه، تطبیقهای برجسته را بخوانید. دو دام رایج است: .* حریص تا آخرین تطبیق ممکن در سطر پیش میرود، و بدون پرچم g فقط اولین تطبیق جایگزین میشود.
کلمهها در خطهای دیگر
در JavaScript، \w و \b فقط حروف A تا Z، ارقام و زیرخط را میشناسند؛ بنابراین نمونه، «café» تکراری یا یک کلمه فارسی تکراری را نمیگیرد. با پرچمهای giu، الگوی (?<![\p{L}\p{N}_])([\p{L}\p{N}_]+)\s+\1(?![\p{L}\p{N}_]) همین کار را در هر الفبایی انجام میدهد.
صفحههای مرتبط
تست Regex جاوااسکریپت پرچمها و موتور پشت این صفحه را توضیح میدهد، و Regex آدرس URL الگوی خوبی برای جایگزینی است؛ مثلاً برای تبدیل لینکهای خام به Markdown با [$&]($&). ابزار کامل با هر ۱۵ الگوی آماده، آزمایشگر Regex است.