Wednesday, July 17, 2013

रेजेक्स ( Regular expressions )



युजरने भरलेला फॉर्म आवश्यक ते सर्व रकाने योग्य रितीने भरले आहेत का हे तपासण्याच्या पद्धतीला फॉर्म व्हॅलिडेशन असे म्हणतात. अशा फॉर्ममध्ये
युजरने  भरलेला इमेल योग्य फॉर्मटमध्ये आहे की नाही हे तपासून पाहण्यासाठी रेजेक्स ( RegEx) नावाचे सूत्र वापरण्यात येते. पीएचपीमध्ये या रेजेक्सची माहिती मिळत नाही कारण हे सूत्र पर्ल या लँग्वेजचा उपयोग करून लिहिले जाते. रेजेक्स म्हणजे रेग्युलर एक्स्प्रेशन्स.
 आता पर्ल म्हणजे PERL (
Practical Extraction and Report Language). पर्ल फाईलच्या शेवटी .pl  असे एक्स्टेंशन असते.

(http://www.perl.com)

# Comment

Regular expressions

Metacharacters         char meaning

^                                  beginning of string

$                                  end of string

.                                   any character except newline

*                                   match 0 or more times

+                                  match 1 or more times

?                                  match 0 or 1 times; or: shortest match

|                                   alternative

( )                                 grouping; "storing"

[ ]                                 set of characters

{ }                                 repetition modifier

\                                   quote or special

To present a metacharacter as a data character standing for itself, precede it with \ (e.g. \. matches the full stop character . only).

  Repetition

a*                                zero or more a's

a+                                one or more a's

a?                                zero or one a's (i.e., optional a)

a{m}                            exactly m a's

a{m,}                           at least m a's

a{m,n}                         at least m but at most n a's

repetition?                 same as repetition but the shortest match is taken

 

Read "a's" as "occurrences of strings, each of which matches the pattern a". Read repetition as any of the repetition expressions listed above it. Shortest match means that the shortest string matching the pattern is taken. The default is "greedy matching", which finds the longest match. The repetition? construct was introduced in Perl version 5.

Special notations with \

Single characters \t tab

\n                                 newline

\r                                  return (CR)

\xhh                            character with hex. code hh

 "Zero-width assertions" \b "word" boundary

\B                                not a "word" boundary

Matching \w matches any single character classified as a "word" character (alphanumeric or _)

\W                               matches any non-"word" character

\s                                 matches any whitespace character (space, tab, newline)

\S                                matches any non-whitespace character 

\d                                 matches any digit character, equiv. to [0-9]

\D                                matches any non-digit character

Character sets: specialities inside [...]

Different meanings apply inside a character set ("character class") denoted by [...] so that, instead of the normal rules given here, the following apply:

[characters]   matches any of the characters in the sequence 

[x-y]                 matches any of the characters from x to y (inclusively) in the ASCII code 

[\-]                    matches the hyphen character -

[\n]                   matches the newline; other single character denotations with \ apply normally, too 

[^something] matches any character except those that [something] denotes; that is, immediately after the leading [ the circumflex ^ means "not" applied to all of the rest 

 

Examples     expression matches...

a|b                   either of a and b 

^abc|abc$      the string abc at the beginning or at the end of the string 

 

ab{2,4}c          an a followed by two, three or four b's followed by a c 

ab{2,}c            an a followed by at least two b's followed by a c 

ab*c                an a followed by any number (zero or more) of b's followed by a c 

ab+c               an a followed by one or more b's followed by a c 

ab?c               an a followed by an optional b followed by a c; that is, either abc or ac 

a.c                   an a followed by any single character (not newline) followed by a c 

a\.c                  a.c exactly 

[abc]                any one of a, b and c 

[Aa]bc             either of Abc and abc

[abc]+             any (nonempty) string of a's, b's and c's (such as a, abba, acbabcacaa)

[^abc]+            any (nonempty) string which does not contain any of a, b and c (such as defg)

\d\d                  any two decimal digits, such as 42; same as \d{2}

\w+                  a "word": a nonempty sequence of alphanumeric characters and low lines (underscores), such as foo and 12bar8 and foo_

100\s*mk        the strings 100 and mk optionally separated by any amount of white  space (spaces, tabs, newlines)

abc\b              abc when followed by a word boundary (e.g. in abc! but not in abcd)

perl\B              perl when not followed by a word boundary (e.g. in perlert but not in perl stuff)

इमेल  तपासण्यासाठी खालील रेजेक्स वापरले जाते.

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$

वरील नियमांवरून आपल्याला या रेजेक्सचा अर्थ काढता येईल. पहिले चिन्ह ^ इमेल स्ट्रिंगची सुरुवात तर  $ इमेल स्ट्रिंगचा शेवट दर्शविते. इमेलच्या स्ट्रिंगमध्ये मुख्य तीन भाग [ ] या कंसांनी दाखविले आहेत व ते + चिन्हांनी एकत्र जोडले आहेत.. दुसर्‍या भागाचे पहिले चिन्ह @ असावे व तिसर्‍या भागाचे पहिले चिन्ह . असावे ( \ हे चिन्ह एस्केप कॅरेक्टर आहे.) असे यावरून कळते. चा पहिला पार्ट A-Z0-9 म्हणजे  अल्फान्युमरिक अक्षरांचा व काही विशिष्ट चिन्हांचा  असावा. मधला भाग अल्फान्युमरिक अक्षरांचा व . किंवा - चिन्हांचा तर शेवटच्या भागातील अक्षरे A-Z0-9 म्हणजे अल्फान्युमरिक असावीत व त्या भागातील एकूण अक्षरे २ ते ६ पर्यंत असावीत 

कोड इग्नायटरमध्ये वेबसाईट लिंकमध्ये लागणारी  index.php फाईल काढून टाकण्यासाठी खालील .htaccess  ही फाईल वेबसाईट फोल्डरमध्ये ठेवावी लागते.
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]


रेजेक्स नियमांचा उपयोग वरील फाईल मध्ये केला आहे. $1 हे फंक्शन RewriteCond च्या सुरुवातीस व शेवटी आहे पहिल्या ओळीचा अर्थ म्हणजे लिंकमध्ये सुरुवातीस index.php किंवा Javascript / CSS / Image root Folder name(s) नसतील ( सुरुवातीच्या ! चिन्हाचा अर्थ) तर वरील सर्व स्ट्रिंग index.php  ने रिप्लेस करावी.   

1 comment:

  1. Ꮋi, just wantеd to mentіon, I enjoyed this aгticle.
    It was inspiring. Keep on posting!

    ReplyDelete