Skip to content

Commit f03488f

Browse files
author
Saeid Darvish
committed
edited (l15 and l16)
1 parent b1be6ef commit f03488f

6 files changed

+59
-58
lines changed

source/_static/sitemap-index.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@
9595
<priority>0.80</priority>
9696
</url>
9797
<url>
98-
<loc>https://python.coderz.ir/lessons/l15.html</loc>
99-
<lastmod>2021-03-17T17:10:25+00:00</lastmod>
98+
<loc>https://python.coderz.ir/lessons/l15-regular-expression-in-python.html</loc>
99+
<lastmod>2023-04-17T17:10:25+00:00</lastmod>
100100
<priority>0.80</priority>
101101
</url>
102102
<url>
103-
<loc>https://python.coderz.ir/lessons/l16.html</loc>
104-
<lastmod>2021-03-17T17:10:25+00:00</lastmod>
103+
<loc>https://python.coderz.ir/lessons/l16-python-module-re.html</loc>
104+
<lastmod>2023-04-17T17:10:25+00:00</lastmod>
105105
<priority>0.80</priority>
106106
</url>
107107
<url>

source/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@
4646
lessons/l12-function-in-python
4747
lessons/l13-decorator-generator-and-lambda-with-python-functions
4848
lessons/l14-recursive-functions-and-memoization-in-python
49-
lessons/l15
50-
lessons/l16
49+
lessons/l15-regular-expression-in-python
50+
lessons/l16-python-module-re
5151
lessons/l17
5252
lessons/l18
5353
lessons/l19

source/lessons/l08-list-and-tuple-in-python.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,7 @@
750750
[1]
751751

752752

753+
.. _python-tuple:
753754

754755
توپِل
755756
------

source/lessons/l14-recursive-functions-and-memoization-in-python.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@
8686
پیاده‌سازی شیوه بازگشتی شاید به نظر هیجان‌انگیز باشد اما نباید فراموش کرد که میزان حافظه (Memory) زیادی مصرف می‌کند، اجرای آن زمان‌بر خواهد بود، درک جریان اجرای آن اغلب سخت است و اشکال‌زدایی (debug) آن ساده نخواهد بود!
8787

8888

89+
.. _using-python-decorator:
90+
8991
استفاده از decorator
9092
~~~~~~~~~~~~~~~~~~~~~
9193

@@ -125,6 +127,8 @@
125127

126128
*به خروجی نمونه کد بالا حتما توجه نمایید!.*
127129

130+
.. _python-set-recursion-limit:
131+
128132
تنظیم عمق بازگشتی
129133
~~~~~~~~~~~~~~~~~~~~
130134

@@ -161,6 +165,9 @@
161165
.. tip::
162166
علاوه بر این محدودیت، یک محدودیت جدی‌تر دیگری نیز وجود دارد و آن هم میزان فضایی است که توسط سیستم عامل برای پشته در نظر گرفته شده است. با رد شدن از این مقدار فضا، برنامه با خطای زمان اجرا مواجه می‌گردد (``RuntimeError``).
163167

168+
169+
.. _python-generator-recursive:
170+
164171
تابع Generator بازگشتی
165172
~~~~~~~~~~~~~~~~~~~~~~
166173

@@ -224,6 +231,8 @@
224231
[1, 2, 3, 4, 5, 5, 6, 7, 8, 9]
225232

226233

234+
.. _memoization:
235+
227236
Memoization
228237
~~~~~~~~~~~~~
229238

source/lessons/l15.rst renamed to source/lessons/l15-regular-expression-in-python.rst

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
.. role:: emoji-size
22

33
.. meta::
4-
:description: کتاب آموزش زبان برنامه نویسی پایتون به فارسی، آموزش ماژول re در پایتون، عبارات باقاعده در پایتون، Regular expression در پایتون، regex در پایتون
5-
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, کتابخانه, پایتون, re
4+
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون - درس پانزدهم: عبارات با قاعده (Regular Expression) یا RegEx در پایتون
65

76

7+
.. _lesson-15:
8+
89
درس ۱۵: عبارات با قاعده (Regular Expression) یا RegEx در پایتون
910
============================================================================
1011

@@ -33,12 +34,18 @@
3334

3435
----
3536

37+
38+
.. _regular-expression:
39+
3640
عبارات باقاعده
3741
-----------------
3842

3943
قواعد «عبارات باقاعده» شامل استفاده و چیدمان تعدادی کاراکتر خاص می‌شود که در مجموع معنی یا الگویی را به وجود می‌آورند!. در ادامه به بررسی این کاراکترها می‌پردازیم.
4044

4145

46+
47+
.. _matching-characters:
48+
4249
کاراکترهای تطابق (Matching Characters)
4350
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4451

@@ -321,6 +328,9 @@
321328

322329

323330

331+
.. _special-sequences:
332+
333+
324334
توالی‌های ویژه (Special Sequences)
325335
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
326336

@@ -541,7 +551,7 @@
541551
تفاوت ``Z\`` و ``$``: در متن‌های چند سطری مشاهده می‌شود به گونه‌ای که ``Z\`` به انتهای کل آن متن و ``$`` به انتهای هر سطر از متن اشاره می‌کنند.
542552

543553

544-
554+
.. _zero-length-match:
545555

546556
انطباق با طول صفر (Zero-length Match)
547557
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -568,7 +578,7 @@
568578

569579

570580

571-
581+
.. _python-re:
572582

573583
ماژول re پایتون
574584
-----------------
@@ -578,6 +588,8 @@
578588
در زبان برنامه‌نویسی پایتون از طریق ماژول ``re`` از کتابخانه استاندارد آن، ثابت‌ها (constants) و توابع (functions) کاربردی بسیاری در زمینه عبارت باقاعده فراهم آورده شده است. در ادامه نگاهی کوتاه به این ماژول خواهیم داشت و شرح کامل توابع کاربردی آن به درس بعدی سپرده خواهد شد.
579589

580590

591+
.. _python-re-compile:
592+
581593
تابع ``compile`` و شی Regular Expression پایتون
582594
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
583595

@@ -625,8 +637,6 @@
625637
به تابع ``compile`` برمی‌گردیم::
626638

627639

628-
>>> # Python 3.x
629-
>>>
630640
>>> import re
631641
>>>
632642
>>> pattern = re.compile("^<html>", re.I)
@@ -638,22 +648,7 @@
638648
re.compile('^<html>', re.IGNORECASE)
639649

640650

641-
::
642-
643-
>>> # Python 2.x
644-
>>>
645-
>>> import re
646-
>>>
647-
>>> pattern = re.compile("^<html>", re.I)
648-
>>>
649-
>>> type(pattern)s
650-
<type '_sre.SRE_Pattern'>
651-
>>>
652-
>>> print pattern
653-
<_sre.SRE_Pattern object at 0x7f22cf27ac00>
654-
655-
656-
کاربرد تابع ``compile`` زمانی است که می‌خواهیم از یک الگو مشخص چندین بار در طول اجرای یک ماژول استفاده نماییم. در ادامه با توابع دیگری از ماژول ``re`` آشنا خواهیم شد؛ این توابع پیش از انجام وظیفه مربوط به خود، به صورت ضمنی الگو را به شی ``re.Pattern`` یا ``sre.SRE_Pattern_`` (در پایتون 2x) کامپایل می‌کنند که به این صورت می‌توان کارایی برنامه را با یک بار ``compile`` افزایش دهیم. البته باید اشاره کرد که مفسر پایتون به صورت خودکار نمونه کامپایل شده چند الگو آخر مورد استفاده را Cache می‌کند، بنابراین چنانچه در برنامه‌ خود از تعداد اندکی الگو استفاده می‌کنید، می‌توانید در این زمینه نگران کارایی نباشید.
651+
کاربرد تابع ``compile`` زمانی است که می‌خواهیم از یک الگو مشخص چندین بار در طول اجرای یک ماژول استفاده نماییم. در ادامه با توابع دیگری از ماژول ``re`` آشنا خواهیم شد؛ این توابع پیش از انجام وظیفه مربوط به خود، به صورت ضمنی الگو را به شی ``re.Pattern`` کامپایل می‌کنند که به این صورت می‌توان کارایی برنامه را با یک بار ``compile`` افزایش دهیم. البته باید اشاره کرد که مفسر پایتون به صورت خودکار نمونه کامپایل شده چند الگو آخر مورد استفاده را Cache می‌کند، بنابراین چنانچه در برنامه‌ خود از تعداد اندکی الگو استفاده می‌کنید، می‌توانید در این زمینه نگران کارایی نباشید.
657652

658653
یادآوری شود که با استفاده از تابع ``dir`` می‌توانیم متدها و صفت‌های شی الگو را مشاهده نماییم::
659654

@@ -662,6 +657,7 @@
662657
>>>
663658

664659

660+
.. _extended-patterns:
665661

666662
الگوهای گسترده (Extended Patterns) پایتون
667663
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -928,7 +924,5 @@
928924

929925
:emoji-size:`😊` امیدوارم مفید بوده باشه
930926

931-
`لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. <https://www.coderz.ir/python-regular-expression>`_
932-
933927

934928

source/lessons/l16.rst renamed to source/lessons/l16-python-module-re.rst

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
.. role:: emoji-size
22

33
.. meta::
4-
:description: کتاب آموزش زبان برنامه نویسی پایتون به فارسی، آموزش ماژول re در پایتون، عبارات باقاعده در پایتون، Regular expression در پایتون، regex در پایتون، توابع ماژول re پایتون -
5-
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, کتابخانه, پایتون, re
4+
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون - درس شانزدهم: ماژول re (عبارات باقاعده) پایتون
65

76

7+
.. _lesson-16:
8+
89
درس ۱۶: ماژول re (عبارات باقاعده) پایتون
910
============================================================================
1011

@@ -32,7 +33,7 @@
3233
----
3334

3435

35-
36+
.. _re-search-functions:
3637

3738
توابع جستجو، ماژول ``re`` پایتون
3839
---------------------------------------
@@ -46,6 +47,8 @@
4647
* ``finditer``
4748

4849

50+
.. _re-search:
51+
4952
تابع ``search``
5053
~~~~~~~~~~~~~~~~~~~~~~
5154

@@ -54,22 +57,6 @@
5457

5558
تابع ``search`` به دنبال اولین انطباق pattern در string می‌گردد، در صورت موفقیت یک شی ``Match`` [`اسناد پایتون <https://docs.python.org/3/library/re.html#match-objects>`__] و در غیر این صورت ``None`` برمی‌گرداند [`اسناد پایتون <https://docs.python.org/3/library/re.html#re.search>`__]::
5659

57-
58-
>>> # Python 2.x
59-
>>>
60-
>>> import re
61-
>>>
62-
>>> match = re.search('Py...n', 'Python is great')
63-
>>>
64-
>>> type(match)
65-
<type '_sre.SRE_Match'>
66-
>>>
67-
68-
::
69-
70-
71-
>>> # Python 3.x
72-
>>>
7360
>>> import re
7461
>>>
7562
>>> match = re.search('Py...n', 'Python is great')
@@ -90,6 +77,8 @@
9077

9178

9279

80+
.. _re-match-object:
81+
9382
شی ``Match`` پایتون
9483
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9584

@@ -343,6 +332,7 @@
343332
>>> match.string
344333
'24.1632'
345334

335+
.. _re-match:
346336

347337
تابع ``match``
348338
~~~~~~~~~~~~~~~~~~~~~~
@@ -352,7 +342,7 @@
352342

353343
تابع ``match`` از ابتدای string انطباق pattern را انجام می‌دهد، در صورت موفقیت یک شی ``Match`` و در غیر این صورت ``None`` برمی‌گرداند [`اسناد پایتون <https://docs.python.org/3/library/re.html#re.match>`__]::
354344

355-
>>> import re # Python 3.x
345+
>>> import re
356346

357347
>>> match = re.match(r'\d+', '123@USERNAME')
358348
>>> print(match)
@@ -415,6 +405,7 @@
415405

416406
>>> match = re.match('Py...n', 'Python is great')
417407

408+
.. _re-fullmatch:
418409

419410
تابع ``fullmatch``
420411
~~~~~~~~~~~~~~~~~~~~~~
@@ -460,6 +451,8 @@
460451
>>> match = re.fullmatch('Py...n', 'Python')
461452

462453

454+
.. _re-findall:
455+
463456
تابع ``findall``
464457
~~~~~~~~~~~~~~~~~~~~~~
465458

@@ -506,6 +499,7 @@
506499

507500
>>> results = re.findall('Py...n', 'PythonPythonPython')
508501

502+
.. _re-finditer:
509503

510504
تابع ``finditer``
511505
~~~~~~~~~~~~~~~~~~~~~~
@@ -515,7 +509,7 @@
515509

516510
خروجی این تابع (``finditer``) یک شی ``iterator`` (شی تکرارکننده - درس نهم) است و حاصل هر بار پیمایش آن یک شی ``Match`` می‌باشد که همانند تابع ``findall`` از سمت چپ string شروع به دنبال انطباق pattern در آن می‌گردد و نتایج را به ترتیب برمی‌گرداند. [`اسناد پایتون <https://docs.python.org/3/library/re.html#re.finditer>`__]::
517511

518-
>>> import re # Python 3.x
512+
>>> import re
519513

520514
>>> string = "My number is 123456789 and my friend's number is 987654321"
521515
>>> result = re.finditer(r'\d+', string)
@@ -572,6 +566,7 @@
572566
>>> result = re.finditer('Py...n', 'PythonPythonPython')
573567

574568

569+
.. _re-replace-methods:
575570

576571
توابع جایگزینی، ماژول ``re`` پایتون
577572
---------------------------------------
@@ -582,6 +577,7 @@
582577
* ``subn``
583578

584579

580+
.. _re-sub:
585581

586582
تابع ``sub``
587583
~~~~~~~~~~~~~~~~~~~~~~
@@ -591,7 +587,7 @@
591587

592588
این تابع (``sub``) حاصل انطباق‌های ممکن pattern در string را در repl جایگذاری می‌کند. این تابع همچنین دو پارامتر اختیاری دارد (flags و count)، پیش‌تر در مورد flags صحبت کردیم (که از نسخه 3.1 پایتون به این تابع اضافه شده است) و count نیز بیانگر ماکزیمم تعداد انطباقی است که می‌خواهیم در repl جایگذاری شود - این مقدار می‌بایست یک عدد مثبت باشد و مقدار صفر (مقدار پیش‌فرض) برای آن به معنی هر تعداد (نامحدود) خواهد بود. پارامتر repl در این تابع می‌تواند از نوع رشته یا تابع باشد، ابتدا حالت رشته را بررسی می‌کنیم [`اسناد پایتون <https://docs.python.org/3/library/re.html#re.sub>`__]::
593589

594-
>>> import re # Python 3.x
590+
>>> import re
595591

596592
>>> string = 'Perl@1987,Python@1991,Ruby@1995'
597593
>>> repl = ' - '
@@ -692,7 +688,7 @@
692688
>>> result = re.sub('Py...n', '*', 'PythonPythonPython')
693689

694690

695-
691+
.. _re-subn:
696692

697693
تابع ``subn``
698694
~~~~~~~~~~~~~~~~~~~~~~
@@ -702,7 +698,7 @@
702698

703699
عملکرد این تابع (``subn``) همانند تابع ``sub`` است. تنها تفاوت در خروجی آن‌هاست، تابع ``subn`` یک شی توپِل محتوی نتیجه و تعداد عملیات جایگذاری را برمی‌گرداند [`اسناد پایتون <https://docs.python.org/3/library/re.html#re.subn>`__]::
704700

705-
>>> import re # Python 3.x
701+
>>> import re
706702

707703
>>> string = 'Perl@1987,Python@1991,Ruby@1995'
708704
>>> repl = ' - '
@@ -723,6 +719,7 @@
723719
('Perl - Python@1991,Ruby@1995', 1)
724720

725721

722+
.. _re-split-methods:
726723

727724
توابع جداسازی، ماژول ``re`` پایتون
728725
---------------------------------------
@@ -732,6 +729,9 @@
732729
* ``split``
733730

734731

732+
.. _re-split:
733+
734+
735735
تابع ``split``
736736
~~~~~~~~~~~~~~~~~~~~~~
737737

@@ -740,7 +740,7 @@
740740

741741
این تابع (``split``) محتوای متن string را بر اساس الگو pattern جدا (split) می‌کند و خروجی آن یک شی لیست از رشته‌ها خواهد بود. این تابع همچنین علاوه بر پارامتر flags (که از نسخه 3.1 پایتون به این تابع اضافه شده است) یک پارامتر اختیاری دیگر نیز با نام maxsplit دارد که تعیین کننده ماکزیمم تعداد جداسازی خواهد بود - این مقدار می‌بایست یک عدد مثبت باشد و مقدار صفر (مقدار پیش‌فرض) برای آن به معنی هر تعداد (نامحدود) خواهد بود. [`اسناد پایتون <https://docs.python.org/3/library/re.html#re.split>`__]::
742742

743-
>>> import re # Python 3.x
743+
>>> import re
744744

745745
>>> string = 'Perl,Python,Ruby'
746746
>>> pattern = ','
@@ -785,15 +785,12 @@
785785

786786

787787

788-
789-
790788
|
791789
792790
----
793791

794792
:emoji-size:`😊` امیدوارم مفید بوده باشه
795793

796-
`لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. <https://www.coderz.ir/python-regular-expression-2/>`_
797794

798795

799796

0 commit comments

Comments
 (0)