Regular Expresion - ტექსტებთან სამუშაო რეგულარული მოქმედებები
General
ზოგადი მიმოხილვა ტექსტებზე რეგულარული ქმედებებისთვის შაბლონური სტრიქონები
ტექსტებიდან გარკვეული ლოგიკით ინფორმაციის ამოკითხვისთვის, გადამოწმებისთვის ან ჩაწერისთვის გამოიყენება რეგულარული მოქმედებები, რომელთა დანიშნულებაა წინასწარ შეთანხმებული შაბლონური ლოგიკით მოხდეს ტექსტების შგინით მოქმედებები.

ტექსტებზე რეგუალრული მოქმედებები გამოიყენება სხვადასხვა პროგრამულ ენებში, როგორებიც არის PHP, .NET, Java, JavaScript, c/c++, Perl, MSSQL, MySQL და აშ.

რეგულარული მოქმედებების ჩასატარებლად, პარამეტრად ფუნქციას უნდა გადაეცეს როგორც ტექსტი რომლის დამუშავებასაც ვაპირებთ, ასევე უნდა გადავცეთ სპეციფიკური ფორმატის ტექსტი, რისი მიხედვითაც დავამუშავეთ ტექსტს.

მისი ძირითადი მოქმედებებია:
ატრიბუტი
აღწერა
 
match
დაძებნოს სტრიქონში სასურველი მეთოდით სტრიქონები. ყველა პროგრამულ ენაში ამ ფუნქციას თავის სახელი აქვს.
 
split
ტექსტის დაყოფა განსაზღვრული ლოგიკით ლოგიკით. ყველა პროგრამულ ენაში ამ ფუნქციას თავის სახელი აქვს.
 
replace
ტექსტში სიტყვების ამოცვლა განსაზღვრული ლოგიკით. ყველა პროგრამულ ენაში ამ ფუნქციას თავის სახელი აქვს.
 
validate
ტექსტის გადამოწმება და სტრუქტურის შემოწმება. ყველა პროგრამულ ენაში ამ ფუნქციას თავის სახელი აქვს.
 
 
RegExpFunctions
ტექსტებზე რეგულარული მოქმედებების ფუნქციები PHP პროგრამულ ენაში
ტექსტებზე რეგულარული მოქმედებების ფუნქციები PHP პროგრამულ ენაში.
ატრიბუტი
აღწერა
 
preg_grep
array preg_grep(string RegExpPattern, array input [, int flags]); მასივში მონაცემების გადამოწმება რეგულარული ქმედებებით;
$array = array("23.32","22","12","23.43.43");
print_r(preg_grep("/\./",$array));
შედეგი: Array ( [0] => 23.32 [3] => 23.43.43 )
 
preg_match
int preg_match ( string RegExpPattern, string subject [, array matches [, int flags [, int offset]]]); სტრიქონში მონაცემების დაძებნა რეგულარული ქმედებების შაბლონით;
preg_match("/^(http:\/\/)?([^\/]+)/i",
    "http://www.php.net/index.html", $matches);
echo $host = $matches[2];
შედეგი: www.php.net
 
preg_match_all
int preg_match_all( string pattern, string subject, array matches [, int flags [, int offset]]); სტრიქონში მონაცემების დაძებნა რეგულარული ქმედებების შაბლონით და მასივში ყველა დაძებნილი შედეგის მიღება;
preg_match_all("|<[^>]+>(.*)]+>|U", 
    "example: 
this is a test
", $out, PREG_PATTERN_ORDER); echo $out[0][0] . ", " . $out[0][1] . "\n"; echo $out[1][0] . ", " . $out[1][1] . "\n";
შედეგი:
example: , 
this is a test
example: , this is a test
 
preg_quote
string preg_quote ( string str [, string delimiter]); სტრიქონში მითითებულ სიმბოლოს გარდაქმნა.
 
preg_replace
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]); სტრიქონში მონაცემების ამოცვლა.
$string = "April 15, 2003";
$pattern = "/(\w+) (\d+), (\d+)/i";
$replacement = "\${1}1,\$3";
echo preg_replace($pattern, $replacement, $string);
შედეგი:
April1,2003
 
preg_replace_callback
mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit]); ტეექსტში მონაცემების ამოცვლა ეტაპობრივად გამოსაძახებელი ფუნქციით;
  $text = "April fools day is 04/01/2002\n";
  $text.= "Last christmas was 12/24/2001\n";

  function next_year($matches) 
  {
    return $matches[1].($matches[2]+1);
  }
  echo preg_replace_callback(
              "|(\d{2}/\d{2}/)(\d{4})|",
              "next_year",
              $text);

შედეგი:
  April fools day is 04/01/2003
  Last christmas was 12/24/2002
 
preg_split
array preg_split ( string pattern, string subject [, int limit [, int flags]]); სტრიქონის დაყოფა რეგულარული მოქმედებების შაბლონის მიხედვით.
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
შედეგი:
array ( 0 => "hypertext", 1 => "language", 2 => "programming", )
 
 
Simple
მარტივი შაბლონები რეგულარული ქმედებებისთვის
მარტივი შაბლონები რეგულარული ქმედებებისთვის
ატრიბუტი
აღწერა
 
სიმბოლოები
სიმბოლოდ ითვლება ყველა გარდა []\^$.|?*+(){}
 
ფუნქციონალური სიმბოლო
ფუნქციონალურ სიმბოლოდ ითვლებიან []\^$.|?*+(){} , თუ რომელიმე მათგანის სიმბოლოდ გადაქცევა გვინდა მაშინ მას წინ უნდა მიემატოს \ სიმბოლო. \, \* და აშ.
 
სტრიქონი
რეგულარული მოქმედებების შაბლონური სტრიქონი თავსდება / / სიმბოლოებს შორის. რომელის განსაზღვრავს სად იწყება რეგულარული შაბლონის ტექსტი და სად მთავრდება. დამთავრების შემდეგ შესაძლოა გამოიყენოთ სიმბოლოები:
i - არ გაითვალისწინებს მაღალ და დაბალი რეგისტრის მქონე სიმბოლოებს;
u - unicode-ის მხარდაჭერა;
 
ძებნა
რეგულარულ ქმედებებში გადაცემული ჩვეულებრივი სიტყვა უფუნქციოდ იძებნება როგორც საკვანძო სიტყვა.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match("/Www/i",$content, $matches);
echo '<pre>'.var_export($matches,true).'</pre>';
შედეგი:
array (
  0 => "www",
)
 
.
. წარმოადგენს ნებისმიერ სიმბოლოს.
 
|
საძებნ პირობებს შორის "ან" ლოგიკით დაკავშირება.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/www|net|top/i",$content, $matches);
შედეგი:
www, net
 
?
დაძებნის ? წინ მდგომი სიმბოლო ჩათვლით და შემდეგ ჩაუთვლელად სიტყვით მიმდევრობებს.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/p[\.|:]?/i",$content, $matches);
შედეგი:
p:, p, p.
 
??
დაძებნის ?? წინ მდგომი სიმბოლო ჩაუთვლელად და შემდეგ ჩათვლით სიტყვით მიმდევრობებს.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/p[\.|:]??/i",$content, $matches);
შედეგი:
p, p, p
 
*
რეპეტატორი - განმეორებელი. თუ სიმბოლო წინ მდგომი ოპერატორი სტრიქონში მოცემული იქნება ერთიმეორეს გვერდით, მაშინ ერთიანად ამოიღებს მათ. ხოლო თუ არა მაშინ ცარიელ სიმბოლოს დატოვებს.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/[htpwhneidxm]*/i",$content, $matches);
შედეგი:
array (
  0 => 
  array (
    0 => 'http',
    1 => '',
    2 => '',
    3 => '',
    4 => 'www',
    5 => '',
    6 => 'php',
    7 => '',
    8 => 'net',
    9 => '',
    10 => 'index',
    11 => '',
    12 => 'htm',
    13 => '',
    14 => '',
  ),
)
 
+
რეპეტატორი - განმეორებელი. თუ სიმბოლო წინ მდგომი ოპერატორი სტრიქონში მოცემული იქნება ერთიმეორეს გვერდით, მაშინ ერთიანად ამოიღებს მათ. ხოლო თუ არა გადავა შემდეგზე.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/[htpwhneidxm]+/i",$content, $matches);
შედეგი:
array (
  0 => 
  array (
    0 => 'http',
    1 => 'www',
    2 => 'php',
    3 => 'net',
    4 => 'index',
    5 => 'htm'
  ),
)
 
[]
სიმბოლოების გაერთიანება. მასში მოცემული სიმბოლოები ცალცალკე იქნება აღქმული "ან" პრინციპით.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/[htpwhneidxm]+/i",$content, $matches);
შედეგი:
array (
  0 => 
  array (
    0 => 'http',
    1 => 'www',
    2 => 'php',
    3 => 'net',
    4 => 'index',
    5 => 'htm'
  ),
)
 
regexp{min,max}
{} წინ მდომი ოპერატორის გამეორება მინიმუმიდან მაქსიმუმამდე.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/w{1,2}/i",$content, $matches);
შედეგი:
array (
  0 => 
  array (
    0 => 'ww',
    1 => 'w'
  ),
)
 
( )
დაჯგუფება.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/(http|www)(\S)/i",$content, $matches);
შედეგი:
array (
  0 => 
  array (
    0 => 'http:',
    1 => 'www.',
  ),
  1 => 
  array (
    0 => 'http',
    1 => 'www',
  ),
  2 => 
  array (
    0 => ':',
    1 => '.',
  ),
)
 
^
გარდა - საწინააღმდეგო, მისი გამოყენება ხდება სიმბოლოების დასაწყისში და ვრცელდება სტრიქონის-სიმბოლოების რიგის ბოლომდე.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/[^:\/\.]+/i",$content, $matches);
შედეგი:
array (
  0 => 
  array (
    0 => 'http',
    1 => 'www',
    2 => 'php',
    3 => 'net',
    4 => 'index',
    5 => 'htm'
  ),
)
 
\s
პოულობს თეთრ-უფერული სიმბოლოებს.
მაგალითი:
$content="http: //www.php.net/index.html";
preg_match_all("/\s+/i",$content, $matches);
შედეგი:
array (
  0 => 
  array (
  0 => ' '
  ),
)
 
\S
პოულობს ხედვად სიმბოლოებს.
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/\S+/i",$content, $matches);
შედეგი:
array (
  0 => 
  array (
  0 => 'http://www.php.net/index.html'
  ),
)
 
\ASCII
\-ის მერე რიცხვი ნიშნავს ASCII კოდს.
 
\d
ერთი ციფრი
 
\w
სიტყვის შემადგენელი სიმბოლოები
 
\W
სიტყვების გამყოფი სიმბოლოები
 
[0-9]
რიცხვები 0-დან 9-ის ჩათვლით
 
[a-z]
ასოები a-დან z-მდე
 
[A-Z]
ასოები A-დან Z-მდე
 
 
 
GroupingNaming
დაჯგუფება და ინდექსაცია
რეგულარული მოქმედებებზე დაჯგუფება და ინდექსაცია
ატრიბუტი
აღწერა
 
(?P)(?=name)
მოძებნილი ელემენტების დაჯგუფება და მოძებნილი ინფორმაციის ცალკე ინდექსად გატანა.
მაგალითი:
preg_match_all("/<(?P[a-z][a-z0-9_]*)\b[^>]*>.*?<\/(?P=tagitem)>/i",$buf,$match);
შედეგი:
მასივში გამოვა ყველა ელემენტი და tagitem ინდექსით გამოჩნდება ელემენტის ტეგის დასახელებები.
 
(?)(\k)
მოძებნილი ელემენტების დაჯგუფება და მოძებნილი ინფორმაციის ცალკე ინდექსად გატანა.
მაგალითი:
preg_match_all("/<(?[a-z][a-z0-9_]*)\b[^>]*>.*?<\/\k>/i",$buf,$match);
შედეგი:
მასივში გამოვა ყველა ელემენტი და tagitem ინდექსით გამოჩნდება ელემენტის ტეგის დასახელებები.
 
\g1 .. \g99
ჯგუფის მნიშვნელობის ნუმერაციით გამოძახება
მაგალითი:
preg_match_all("/<(?P[a-z][a-z0-9_]*)\b[^>]*>.*?<\/\g1)>/i",$buf,$match);
შედეგი:
მასივში გამოვა ყველა ელემენტი და tagitem ინდექსით გამოჩნდება ელემენტის ტეგის დასახელებები.
 
(?#comment)
კომენტარი
მაგალითი:
$content="http://www.php.net/index.html";
preg_match_all("/www(?#comment)/i",$content,$match);
შედეგი:
მასივში გამოვა ყველა ელემენტი და tagitem ინდექსით გამოჩნდება ელემენტის ტეგის დასახელებები.