Fadak.IR Fadak Solutions
English Русский العربية فارسی
Articles Management Studies Language


/ Coumputer / Programming

Regular Expression (regex)


   More Resources
   Important examples for Regular Expressions
   Test RegEx

Regular expression to remove HTML tags from a string:
(?i)<span[^>]*>

Help

a|b Matches a or b
gr(a|e)y Matches gray or grey
. Matches any single character
[abc] Matches a single character a, b or c
[^abc] Matches any single character except a, b or c
[a-z] Matches a single charactor in the range a to z
[a-zA-Z] Matches a single charactor in the range a to z or A to Z
^ Matches the start of the filename
$ Matches the end of the filename
( ) Defines a marked subexpression
\n Matches what the nth marked subexpression matched, where n is a digit from 1 to 9
\b Match word boundaries
* Matches the preceding element zero or more times
? Matches the preceding element zero or one times
+ Matches the preceding element one or more times
*? Lazily matches the preceding element zero or more times
+? Lazily matches the preceding element one or more times
{x} Matches the preceding element x times
{x,} Matches the preceding element x or more times
{x,y} Matches the preceding element between x and y times
\ Escape special character

 

 

Regex quick reference
[abc]     A single character: a, b or c
[^abc]     Any single character but a, b, or c
[a-z]     Any single character in the range a-z
[a-zA-Z]     Any single character in the range a-z or A-Z
^     Start of line
$     End of line
\A     Start of string
\z     End of string
.     Any single character
\s     Any whitespace character
\S     Any non-whitespace character
\d     Any digit
\D     Any non-digit
\w     Any word character (letter, number, underscore)
\W     Any non-word character
\b     Any word boundary character
(...)     Capture everything enclosed
(a|b)     a or b
a?     Zero or one of a
a*     Zero or more of a
a+     One or more of a
a{3}     Exactly 3 of a
a{3,}     3 or more of a
a{3,6}     Between 3 and 6 of a

options: i case insensitive m make dot match newlines x ignore whitespace in regex o perform #{...} substitutions only once

 

 

برای اینکه بین دو عبارت را انتخاب کنیم از عبارت زیر استفاده می‌کنیم

Start*.+"End

    . در الگو به معنای این است که هر کاراکتری می‌تواند ظاهر شود(فقط یک کاراکتر).
    * در الگو به این معناست که عبارت قبل از آن می‌تواند 0 بار یا بیشتر تکرار شود.
    + در الگو به این معناست که عبارت قبل از آن می‌تواند 1 بار یا بیشتر تکرار شود.
    ? در الگو به معنای این است که عبارت قبل از آن می‌تواند ظاهر نشود یا 1 بار ظاهر شود.
    {num} عبارت قبل از این به تعداد num باید تکرار شود نه بیشتر و نه کمتر)num یک عدد صحیح است).
    {m,n} عبارت قبل از این به تعداد حداقل m و حداکثر بار باید تکرار شود نه بیشتر و نه کمتر)n , m هردو اعداد صحیح هستند).
    () هر عبارتی بین پرانتز قرار گیرد به عنوان یک واحد حساب می‌شود.
    [] یک کلاس کاراکتر را مشخص می‌کند به این معنا که فقط یکی از کاراکتر‌های تعریف شده داخل آن می‌توانند ظاهر شوند.
    - در الگو برای مشخص کردن محدوده به کار می‌رود مثلا 9-0.
    ^ دو حالت می‌تواند داشته باشد 1.در ابتدای الگو به این معناست که عبارت مورد جستجو باید با عبارتی (کلمه،کاراکتر یا کلاس کاراکتر) که بعد از ^ می‌آید شروع شود.در داخل [] به این معناست که کاراکتر بعد از آن نباید ظاهر شود.
    $ در پایان الگو به این معناست که عبارت مورد جستجو باید با عبارتی(کلمه،کاراکتر یا کلاس کاراکتر) که قبل از $ می‌آید شروع شود.
    | یک عملگر است و به معنای یا می‌باشد.


. در الگو به معنای این است که هر کاراکتری می‌تواند ظاهر شود(فقط یک کاراکتر).
* در الگو به این معناست که عبارت قبل از آن می‌تواند 0 بار یا بیشتر تکرار شود.
+ در الگو به این معناست که عبارت قبل از آن می‌تواند 1 بار یا بیشتر تکرار شود.
? در الگو به معنای این است که عبارت قبل از آن می‌تواند ظاهر نشود یا 1 بار ظاهر شود.
{num} عبارت قبل از این به تعداد num باید تکرار شود نه بیشتر و نه کمتر)num یک عدد صحیح است).
{m,n} عبارت قبل از این به تعداد حداقل m و حداکثر بار باید تکرار شود نه بیشتر و نه کمتر)n , m هردو اعداد صحیح هستند).
() هر عبارتی بین پرانتز قرار گیرد به عنوان یک واحد حساب می‌شود.
[] یک کلاس کاراکتر را مشخص می‌کند به این معنا که فقط یکی از کاراکتر‌های تعریف شده داخل آن می‌توانند ظاهر شوند.
- در الگو برای مشخص کردن محدوده به کار می‌رود مثلا 9-0.
^ دو حالت می‌تواند داشته باشد 1.در ابتدای الگو به این معناست که عبارت مورد جستجو باید با عبارتی (کلمه،کاراکتر یا کلاس کاراکتر) که بعد از ^ می‌آید شروع شود.در داخل [] به این معناست که کاراکتر بعد از آن نباید ظاهر شود.

$ در پایان الگو به این معناست که عبارت مورد جستجو باید با عبارتی(کلمه،کاراکتر یا کلاس کاراکتر) که قبل از $ می‌آید شروع شود.
| یک عملگر است و به معنای یا می‌باشد.

 نتیجه
    
regex
پیدا کردن کلمه foo     foo
شروع یک رشته با کلمه foo     ^foo
پایان یافتن یک رشته با کلمه foo     foo$
وقتی که خود کلمه foo در یک رشته باشد     ^foo$
حرف c یا b یا a     [abc]
تمام حروف از a تا z     [a-z]
کارکترهایی که بزرگ نیستند     [^A-Z]
پیدا کردن gif یا jpg     (gif|jpg)
یک یا جند کلمه با حروف کوچک     [a-z]+
اعداد، نقطه و یا علامت منفی     [۰-۹\.\-]
هر کلمه که حداقل یک حرف، عدد یا آندرلاین داشته باشه     ^[a-zA-Z0-9_]{1,}$
wy, wz, xy, یا xz     ([wx])([yz])
هر کاراکتری به غیر از حروف و اعداد     [^A-Za-z0-9]
سه حرف و چهار عدد     ([A-Z]{3}|[0-9]{4})

Bracket

این علامت [] هنگامی که در متن و context عبارات عادی {regular expression} به کار می‌رود، معنای خاصی دارد. از آن‌ها برای پیدا کردن طیفی از کاراکتر‌ها استفاده می‌شود.

 

Expression{عبارت}
Description {توصیف کاربرد}
[0-9]
با تمام ارقام دهدهی{decimal digits} از 0 تا 9 مطابقت دارد و مچ می‌شود.
[a-z]
با تمام حروف{character} کوچک {lowercase} ازaتاz مطابقت دارد.
[A-Z]
با تمام حروف بزرگ از A تا Z هم خوانی دارد وبا آن مچ می‌شود.
[a-Z]
با تمام حروف{character} کوچک {lowercase} ازa تا حروف بزرگ Z مچ و هماهنگ است.

طیف‌های بالا ذکر شده عمومی هستند، همچنین می‌توانید از طیف ]3-0[ برای مطابقت با هر عدد دهدهی {decimal digits} از 0 تا 3 استفاده کنید، یا از طیف [b-v] برای حروف کوچک از b تا v.

Quantifier {کمیت سنج}

برای نشان دادن تعداد دفعات تکرار یا موقعیت سری کاراکتر {character sequence}‌های داخل [] و تک کاراکتر‌ها باید از کاراکتر خاص استفاده کرد. هر یک از این کاراکتر‌های مخصوص معنای ضمنی {connotation} منحصر به فردی دارد. این علامت‌ها +، *، ?، {int. range} و $ به دنبال رشته کاراکتر character sequence}} می‌آیند.

Expression{عبارت}
Description {توصیف کاربرد}
p+
با هر رشته یا string‌ای که حداقل یک p دارد مطابقت دارد.
p*
با هر رشته یا string‌ای که حداقل { zero}0 یا P بیشتری داشته باشد مَچ می‌شود.
p?
با هر رشته یا string‌ای که حداقل { zero}0 یا P بیشتری داشته باشد مَچ می‌شود. این راه فقط شیوه‌ی دیگر برای استفاده از p* است.
p{N}
با هر رشته یا string‌ای که توالی از N p's دارد مطابق است.
p{2، 3}
با هر رشته یا string‌ای که توالی از دو یا سه p دارد هم خوانی دارد.
p{2، }
با هر رشته یا string‌ای که توالی از حداقل دو p دارد تطبیق دارد.
p$
با هر رشته‌ای که p در انتها خود دارد مطابق است.
^p
با هر رشته‌ای که p در ابتدای خود دارد هم خوان است.

مثال زیر مفاهیم کاراکتر‌هایی که با هم تطبیق دارند را برای شما روشن می‌سازد.

Expression {عبارت}
Description {توصیف کاربرد}
[^a-zA-Z]
با رشته‌هایی که هیچ یک از کاراکتر‌های a تا z و از A تاZ را نداشته باشد مطابقت دارد.
p. p
با رشته‌هایی که دربردارنده‌ی p و به دنبال آن هر کاراکتر دیگری بیاید، که باز به دنبال آن کاراکتر دوباره p بیاید مطابقت دارد.
^. {2}$
با هر رشته‌ای که دقیقاً دو کاراکتر دارد مَچ می‌شود.
(. *)
با هر رشته‌ای که در علامت و قرار داده شده باشد هم خوانی دارد.
p(hp)*
با هر رشته‌ای که یک p و به دنبال آن 0 یا مثال بیشتری از توالی hp داشته باشد.

طیف کاراکتری از پیش تعریف شده {predefined character range}

برای راحتی هر چه بیشتر شما در برنامه نویسی طیف کاراکتری از پیش تعریف شده متعددی، که با نام character class هم شناخته می‌شوند، موجود هست. کلاس کاراکترها یک طیف کامل از کاراکترها مثل الفبا یا دسته عدد صحیح {integer set} را تعریف می‌کند.

Expression{عبارت}
Description {توصیف کاربرد}
[[:alpha:]]
با هر رشته‌ای که دربردارنده‌ی کاراکترهای الفبا از aA تا zZاست مطابقت دارد.
[[:digit:]]
با هر رشته‌ای که دربردارنده‌ی numerical digit {عددی} از 0 تا 9 است تطبیق دارد.
[[:alnum:]]
با هر رشته‌ای که دربردارنده‌ی کاراکترهای حرفی-عددی {alpha-numeric} aA تا zZ و 0 تا 9 هست، مطابقت دارد.
[[:space:]]
هر رشته‌ای که دارای جای خالی {space} هست.

PHP's Regexp POSIX function

PHP در حال حاضر هفت عملکرد {function} برای جست و جو در string به کمک عبارات عادی POSIX-style فراهم می‌کند.

Expression{عبارت}
Description {توصیف کاربرد}
ereg()
عملکرد، تابع {function} ereg() یک رشته‌ی مشخص شده توسط رشته برای رشته مشخص شده توسط الگو را جستو و جو می‌کند، که اگر الگوی مطابق پیدا شود true باز می‌گردد و اگر غلط باشد نتیجه‌ی false می‌دهد.
ereg_replace()
ereg_replace() function به دنبال رشته‌ای که الگو تعیین می‌کند می‌گردد، در صورت پیدا کردن جایگزین آن را جایگزین می‌کند.
eregi()
eregi() در سرتاسر یک رشته مشخص شده توسط الگو به دنبال رشته مشخص شده توسط رشته‌ی دیگر می‌گردد.
eregi_replace()
eregi_replace() function دقیقاً مانند ereg_replace() function عمل می‌کند، به جز این که جستو و جوی به دنبال الگو به کوچک و بزرگی حروف حساس نیست.
split()
split() function یک رشته را به عناصر مختلف تقسیم می‌کند؛البته مرز ومحدوده هر اِلمان وابسته به وقوع و وجود الگو در رشته هست.
spliti()
spliti() function دقیقاً به همان شیوه‌ی برادرش split() عمل می‌کند، به جز این که به کوچک و بزرگی حروف حساس نیست {case sensitive}.
sql_regcase()
از sql_regcase() می‌توان به عنوان یک عملکرد خدماتی{utility function} یاد کرد، که کاراکتر داخل input parameter string {ورودی رشته پارامتر} را به عبارتی که دو کاراکتر دارد و داخل [] قرار می‌گیرد تبدیل می‌کند

عبارات عادی سبک PERL

عبارات عادی سبک PERL شبیه همپای POSIX خود هستند. از POSIX syntax تقریباً می‌توان به جای Perl-style regular expression functions {توابع عبارات عادی سبک PERL} استفاده کرد. در واقع، شما می‌توانید تمام کمیت سنج {quantifier}‌های معرفی شده در بخش POSIX پیش را به کار ببرید.
هم اکنون توضیح متخصری درباره‌ی مفاهیم معمول در Perl regular expression می‌دهیم. سپس، شما را با عملکردهای {function} مرتبط با آن آشنا می‌سازیم.

Metacharacters {متا کاراکترها}

متا کاراکتر اساساً یک کاراکتر الفبایی {alphabetical} است که به دنبال علامت ' /' می‌آید و به ترکیب معنای خاصی می‌دهد.
برای مثال، می‌توانید با استفاده از متا کاراکتر '\d'، مبالغ زیاد پول را جستو و جو کنید : /([\d]+)000/.
اینجا \d هر رشته‌ای که از کاراکتر‌های عددی تشکیل شده است را جست و جو بررسی می‌کند.
زیر فهرستی از متا کاراکتر‌هایی که در PERL Style Regular Expressions به کار می‌رود را مشاهده می‌کنید.

character
Description {توصیف کاربرد}
.
یک تک کاراکتر{single character}
\s
کاراکتر جای خالی {whitespace}، (space، tab، newline)
\S
کاراکتر بدون جای خالی{non-whitespace}
\d
یک رقم{digit}(9-0)
\D
یک non-digit {غیررقم}
\w
یک کاراکتر کلمه {word character}، (a-z، A-Z، 0-9، _)
\W
کاراکتر غیر کلمه‌ای } non-word character}
[aeiou]
در مجموعه‌ی داده شده فقط با یک کاراکتر match می‌شود.
[^aeiou]
با یک تک کاراکتر خارج از مجموعه‌ی داده شده مَچ می‌شود.
(foo|bar|baz)
به همه‌ی جایگزین‌های مشخص شده می‌خورد.

Modifiers {اصلاح کنندها}

modifier‌های متعددی وجود دارند که کار با regexps بسیار آسان می‌کنند، مثل حساسیت به کوچک و بزرگی {case sensitivity}، توانایی جستو و جو در چند خط همزمان و غیره.

character
Description {توصیف کاربرد}
i
فرآیند match را به کوچک و بزرگی حروف بی تفاوت {case insensitive} کنید.
m
دستور می‌دهد که اگر رشته{string}، newline یا carriage character return داشت، عملگرهای {operator} ^ و $اکنون با مرز سر خط{newline boundary} به جای مرز رشته ای{string boundary} مقایسه و match شود.
o
تنها عبارت{expression} را ارزیابی می‌کند.
s
اجازه‌ی استفاده از. برای تطبیق دادن و وصل کردن کاراکتر خط جدید{newline} می‌دهد.
x
به شما اجازه می‌دهد برای ایجاد روشنی در عبارت از جای خالی {whitespace}استفاده کنید.
g
به صورت سراسری تمام match‌ها را پیدا می‌کند.
cg
به فرآیند جستو و جو اجازه می‌دهد که کار خود را حتی پس از این که تطبیق سراسری شکست خورده ادامه دهد.

تابع‌های {function} سازگار Perl PHP'S Regexp

PHP برای جستو و جوی رشته‌ها {string} به کمک عبارت‌های عادی سازگار با Perl، عملکرد‌های زیر را ارائه می‌دهد.

Function {عملکرد}
Description {توصیف عملکرد}
preg_match()
preg_match() در رشته به دنبال الگو {pattern} می‌گردد، که در صورت پیدا کردن الگو نتیجه‌ی true ودر غیر این صورت false به دست می‌دهد.
preg_match_all()
preg_match_all() function با تمام الگوهای موجود در رشته مچ می‌شود.
preg_replace()
تابع یا عملکرد preg_replace() دقیقاً مانند ereg_replace() عمل می‌کند، به استثنا‌ی این که عبارات عادی {regular expression} را می‌توان در الگو وreplacement input }parameter پارامترهای جایگزین ورودی} به کار برد.
preg_split()
preg_split() کاملاً مثل split() عمل می‌کند، به استثنا‌ی این که عبارات عادی {regular expression} به عنوان پارامترهای داده برای الگو به کار می‌روند.
preg_grep()
preg_grep() تمام عنصرهای input_array را بررسی می‌کند، که تمام اِلِمان‌های‌ای که با patternregexp مطابقت دارند را به عنوان نتیجه بازمی گرداند.
preg_ quote()
کاراکترهای عبارات عادی را با علامت " " فرامی خواند.

More Resources

 آموزش Regular Expression در php

  Regular Expression آموزش عبارت با قاعده

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript

Regex Tester and Debugger Online - Javascript, PCRE, PHP

Regular Expressions Reference: Quantifiers

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript

آموزش کامل Regular Expressions عبارات باقاعده

RegExr: Learn, Build, & Test RegEx

phone validator - Regex Pal

 Regex Cheat Sheet

Regular Expressions in PHP - Tutorial Republic

MySQL REGEXP: Querying Data Using Regular Expressions

Regex Tutorial - Start and End of String or Line Anchors

1.4. Regular Expressions

Important examples for Regular Expressions

// The Regular Expression filter
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
// The Text you want to filter for urls
$text = "The text you want to filter goes here. http://google.com";
// Check if there is a url in the text
if(preg_match($reg_exUrl, $text, $url)) {
       // make the urls hyper links
       echo preg_replace($reg_exUrl, "{$url[0]} ", $text);
} else {
       // if no urls in the text just return the text
       echo $text;
}

Selecting tags

<(?!a|br)[^>]*>
<(div|/div|br|p|/p)[^>]{0,}>

Check email:
preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", $email)

Only numbers, letters and dot:
echo preg_match("/^[a-z0-9.]+$/i", $accountname);
if(preg_match('/[^0-9a-z\s-]/i',$string))
if(preg_match('/[^0-9A-Za-z\(\)\s-]/i',$string))

How do I remove blank lines from text in PHP

// New line is required to split non-blank lines
preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $string);

The above regular expression says:

/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/
1st Capturing group (^[\r\n]*|[\r\n]+)
1st Alternative: ^[\r\n]*
^ assert position at start of the string
[\r\n]* match a single character present in the list below
Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
\r matches a carriage return (ASCII 13)
\n matches a fine-feed (newline) character (ASCII 10)
2nd Alternative: [\r\n]+
[\r\n]+ match a single character present in the list below
Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy]
\r matches a carriage return (ASCII 13)
\n matches a fine-feed (newline) character (ASCII 10)
[\s\t]* match a single character present in the list below
Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
\s match any white space character [\r\n\t\f ]
\tTab (ASCII 9)
[\r\n]+ match a single character present in the list below
Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy]
\r matches a carriage return (ASCII 13)
\n matches a fine-feed (newline) character (ASCII 10)

Test RegEx

RegExr: Learn, Build, & Test RegEx

https://regex101.com/

 
 

 

 


Articles
Digital Media
Humanities
IT Management
Coumputer
Miscellaneous
Product & Services
About Fadak
Management
Contemporary Management Journal
Managerial Verses
Photography Quotes
Photo is written
Management Researcher Bank
Management articles titles
Educational Resources (Seminary & University)
Studies
Observatory - Personalities
Observatory - Cultural
Observatory - Academic
Observatory - Media
Observatory - scientific events
Language
Dictionary
Russian Language Test
Russian Proverb
English Proverb
Four language sentences
logo-samandehi
About | Contact With Us | Privacy Policy | Terms | Cookies Policy |
Version (Pre-Alpha) 2000-2022 CMS Fadak. ||| Version : 5.2 ||| By: Fadak Solutions Old Version