by bichonfrise74 (Vicar)
 on Oct 18, 2008 at 21:48 UTC Need Help??

Dereferencing Syntax

Direct

Using References

Syntax 1

Syntax 2

array

element

\$a[0]

\${\$ar}[0]

\$ar->[0]

slice

@a [0,1,2]

@{\$ar}[0,1,2]

unindexed

@a

@{\$ar}

last index

\$#a

\$#{\$ar}

hash

element

\$h{'a'}

\${\$hr}{'a'}

\$hr->{'a'}

slice

@h{'a', 'b', 'c'}

@{\$hr}{'a', 'b', 'c'}

unindexed

%h

%{\$hr}

code

call

func(@args)

&{\$cr}(@args)

\$cr->(@args)

* – The curly brackets around \$ar, \$hr and \$cr are optional.

I got this from the scratchpad of ikegami which I think is really useful.

Regex Summary

 Metacharacter Meaning [abc] Any one of a, b, or c. [abc] Anything other than a, b, and c. \d \D A digit; a non-digit. \w \W A 'word' character; a non-'word' character. \s \S A whitespace character; a non-whitespace character. \b The boundary between a \w character and a \W character . Any single character (apart from a new line). (abc) The phrase 'abc' as a group. ? Preceding character or group may be present 0 or 1 times. + Preceding character or group is present 1 or more times. * Preceding character or group may be present 0 or more times. {x,y} Preceding character or group is present between x and y times. {,y} Preceding character or group is present at most y times. {x,} Preceding character or group is present at least x times. {x} Preceding character or group is present x times.

Non-greediness For Quantifiers

Syntax: (pattern)+?

(pattern)*?

The metacharacters + and * are greedy by default and will try to match as much as possible of the referenced string (while still achieving a full pattern match). This 'greedy' behavior can be turned off by placing a ? immediately after the respective metacharacter. A non-greedy match finds the minimum number of characters matching the pattern.

Grouping and Alternation

| For Alternation

Syntax: pattern1|pattern2

By separating two patterns with |, we can specify that a match on one or the other should be attempted.

() For Grouping And Backreferences ('Capturing')

Syntax: (pattern)

This will group elements in pattern. If those elements are matched, a backreference is made to one of the numeric special variables (\$1, \$2, \$3 etc.)

(?:) For Non-backreferenced Grouping ('Clustering')

Syntax: (?:pattern)

This will group elements in pattern without making backreferences.

Syntax: pattern1(?=pattern2)

This lets us look for a match on 'pattern1 followed by pattern2', without backreferencing pattern2.

Syntax: pattern1(?!pattern2)

This lets us look for a match on 'pattern1 not followed by pattern2', without backreferencing pattern2.

(?<=) For Positive Lookbehind

Syntax: pattern1(?<=pattern2)

This lets us look for a match on 'pattern1 preceded by pattern2', without backreferencing pattern2. This only works if pattern2 is of fixed width.

(?<!) For Negative Lookbehind

Syntax: pattern1(?<!pattern2)

This lets us look for a match on 'pattern1 not preceded by pattern2', without backreferencing pattern2. This only works if pattern2 is of fixed width.

Backreference Variables

 Variable Description \num (num = 1, 2, 3…) Within a regular expression, \num returns the substring that was matched with the numth grouped pattern in that regexp. \$num (num = 1, 2, 3…) Outside a regular expression, \$num returns the substring that was matched with the numth grouped pattern in that regexp. \$+ This returns the substring matched with the last grouped pattern in a regexp. \$& This returns the string that matched the whole regexp – this will include portions of the string that matched (?:) groups, which are otherwise not backreferenced. \$` This returns everything preceding the matched string in \$&. \$' This returns everything following the matched string in \$&.

Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2020-10-30 01:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My favourite web site is:

Results (276 votes). Check out past polls.

Notices?