use strict;
my $str = ':-)--
:-%
:-)-{8
:>)
:-X
*:o)
:->|
o-)
=:-)
>:)
:-{
:-)))))))
[:|]
@>--;--
:%)%
:-=)
:-s
(ap)
:-o
OOOOOO
(8>/--<
(.V.)
(.!.)
:-O
:-|
:%)
(:I
:-0
O:)
O:-)
O-)
0=)
0:-)
(a)
^j^
0*-)
0;-)
o:-)
X(
X-(
O
b (
>:-)
>:-(
(:-&
:@
:(
:-t
:-||
:-@
:-Z
|_|\'
-_-;
^^;
??
@_@
(-_-* )
( o_o)
<:-I
=D>
:*)?
:*) ?
l-)
|-I
|-)
~X(
(-:
(au)
:o)
:=8)
~O><
~:O
~:0
X:-)
~#:-(
?:-)
~~8-O
C:-|
(:-)
((
(::( )::)
(::[]::)
o >
:-E
D:-)
q:-)
d:-)
d:-p
:)
:-{0
^v^
B-)
;;)
(brb)
(\'\'\')-.-(\'\'\')
(") (")
:>)=
:)#
:-){
(:-{~
b-(
%+|
: =
0___
X:-|
%-|
(b)
&:-o-8-<
(*)/ (*)
:D
:-D
>:D<
:------------)
(:+)
:))
:-(=)
<(:?)
=|:O}
~O~
(
|-O
(^)
*<:)
:->
:-]
(:<)
(:-D
?-(
!-(
(bah)
(:-
#-)
^^
%\')
:-{}
`-`
:")
:,\')
:-">
(@_@)
@=
:-(
l-o
\\-o
:-!
:-O ZZ ZZ ZZ
:-}X
(||)
===O____iii
Q(\'\'q) Q(\'\'Q)
(z)
( \'}{\' )
>:*)
:-#
%-(
=((
</3
(U)
(:^(
:^)
}:-(
:-c
U U
#:-)
:-#|
(_|_)
}i{
}|{
})i({
(p)
:()
P=\\\\
~
=^.^=
>\'o\'<
>^..^<
>^,,^<
}:-X
(@)
>;3
Q:-)
(:@@@@@@@@@@@@@@@D
C|:-=
;)
\\o/
*\\O/*
C=:-)
(-: =3
8^
~:>
C8o \\
C8o )
C8o (
;-(
<|-)=
-{:-]
*<<<<=
*<<<<+
<{^-^}>
=====~
(ci)
:-.)
(:)
:-)
(o)
<|:-()}
<|:^0|<
<]:o){
*<):O)
*<:O)
:O)
:*)
(c)
?_?
P-)
$:-)
(co)
:-r
:-8(
O.o
%)
%-)
:s
:-S
:-Q
:-$
:-/
3:08
3:-O
+/\'\\
<):)
<):-)
}:-)
{:-)
V.v.V
H-)
T_T
T^T
QQ
=O ::::::
=\'(
&.(..
(;_;)
:\'(
:\'
:\'-(
:*(
:*-(
:((
:..[
:_ (
:`-(
;_;
:\'-)
|_|
C(_)
~o)
|_P
&:-)
@:-)
:-@!
O-(
0-)
*-(
<(..<)
\\\\:D/
(>..)>
^(. .)^
C8<]
Q:|
8->
*-*
8-#
:-| :-|
:-9
:-[
}=^{|~
]:->
()}:o)
-6
>:->
}:->
:>
;->
/\\
=\\
:|
:(&
:-e
DX
/:(
%-}
d[-_-]b
[:-}
d^_^b
<[.,=.,]-
:O$
:O\\\'
:O/
:O?
:3-<
:3-]
8==3
&===3
(&)
(>.<)
#-o
:-) 8
:$)
:-))
}:-(=
(:-|K-
\\_/
*DRINK*
:-). . .
=P~
*DROOLING*
:P
:-P
:-)~
:-P```
:-B
:~)
:#)
:-}
%-
./
8)
<:-)
<:I
<:-(
(e)
<:-0
:~
2:)
@=)
5:-)
&:-/
:$
T-T
//_^
(//.^)
(//_^)
0|-)
(.\\|/.)
>-)
:-6
8-)
}=D
-@--@-
# -
(p ^^)=====O
o,..,o
^,..,^
>-
/ | | |
(~)
(yn)
><(((">
<><
<*))))><
<((((><
<")))><
<.{{{><
}-(((*>
{}{
;-)
@>---
()
G:-)
=:-H
%%-
7:-)
/:-)
8)~~*
<? ?>
:(?)
[II]D
(:-(
:-<
):-(
X[
=P
><
://
\\~/
*:*
: 0=/--
8=:-)
:O
4:-)
~~:-(
(g)
*GIGGLING*
>:o===Q<
8:^)
(x)
-o-o-
8*)
8:-)
(nah)
:-{>
:-)>
|-|
o/
8:]
%:O
:8]
(~};)
:^D"
$_$
(____)
$8()
(^:^)
E:-)
E-:-)
(%)
:-3
:-})
&:-]
U
|___|
=)
^.^
^?^
^-^
:-)
3:8)
:@)
<~8)
>O<
/* *
:-\'
:-)}
-:-)
:=)
<<<<(:
<<<<(:-)
:-`|
(({..}))
<u3
<3
(:-...
|:-)
(h5)
^5
:-I
:-\\
:-,
|-D
L.
(8-(1)
(_8^(|)
( o ) ( o )
[_]
(h)
{ }
((((name))))
(:)\\/<
:)X
<(^.^<)
<(*.*<)
((()))
:D<
{{{***}}}
(()):**
%*@:-(
%-\\
:0
XD
@-)
O[-<]:
:[
((:-/
?$?:-)
>;-(\'
:-) .
:-) ,
#;-)
:+(
(-.-)ZZZ
~oO>
(:-$
*red+u
*help
*IN LOVE*
(*_*)
._.
:7/
8
%7<
(ip)
?:^[]
:###)
//o-o\\\\
(8 {
X-p
*JOKINGLY*
8-*
@:-}
:-T
\\VVV/
\\$$$/
<(\'.\'<)
<(^.^)>
<( \'.\' <)
<( \'.\' )>
(>\'.\')>
=
*
:-*
:-)*
;-(!)
(_X_)
*KISSED*
:*
:}{:
*KISSING*
(}{)
(:-*
( \'}~{\' )
:pd:
=+=
=^w^=
:3
@(*o*)@
:*)O
<{::}>
(::)<
C:-)
l8r)
:))
;-D
%OD
=D
%-(I)
:.-)
?-:
({)
)-:
>;->
:^o
(i)
(li)
;-,
(:)-)
:X
[:-)
:-----)
<@> <@>
>_>
<_<
(*)?(*)
<.< >.>
<o?o>
<*_*>
:-?
L-)
%+{
:-) :-) :-)
(>^.^)> <3 <(^.^<)
:x
(m)(m)(m)
~:(
=/
>=[
>=(
>:-<
>,<
&-L
:-(*)
:-
@@@@@:-)
@@@@:-)
(#-[
:-)(-:
(d)
3:[
\\m/
�O�
8(:-)
o/<
o|-<
:<
:p
:~/
(mp)
^o^
(mo)
$-)
@(-_-)@
---
@(^_^)@
:E
(00)
(|)
(_i_)
oO~
~<>^>
<:3)~~
<:3)~
<:3 )~
:-{)
:-{)}
8-o
~O-O~
(m)
l_l)
={D
{ 8{]
:{
:-{)=
{:-{)}
:-:
:-x
:-SS
~,~
*:-)
(-)
8-|
*8-I
E-:-I
{}
|:-0
:/i
:/)
[-(
-8
8-O
#:-O
#:-o
?:-_]
|:-{)~
:)]
.-]
.-)
,-)
\':-(
\':-�
�-)
\'-)
=X
=^)
:d
^_^
(^o^)
<.....
(<. . . . .
(:V)
:v
<:o)
<:-P
<l:0
*<(8)~/~<
*<|8-P~
(:V
(/|\\)
:)>-
8>
<:^]
3:]
>:P
:?)
%\\v
%-^
----|}
o()~
=8)
:8)
:(:)
(o^-^o)
^_^\'\'
(_)
:---)
:-------[
P-(
<|
<%)
(pi)
(pl)
}:^#)
[::::]
****
+O=-)
;-\\
O/
[-o<
&&&&
\\<><>/
~<:-)
\\&&&/
;~[
(+[ ]-:-)
=:-(
Q(\'.\'Q)
:-($)
\\%%%/
=:>)
(___)0
/:)
:-R
=:7)~~
=:7(~~
--- :
:-C
~:-(
()_RED_(>
(l)
(k)
(f)
}---:o>
+-(:-)
>=D
(})
<(-_-)>
[:]
\\m/>.<\\m/
\\m/(**)\\m/
\\m/ >_< \\m/
>-D
\\w/^^,\\w/
9_9
>>
=))
7:)
7:^]
@~\'~~~
@~)~~~~
@>-;--
@}>-\'-,--
@};-
@};---
@}->--
@)->-
@->--
@-}----
@>;-----
3:*>
Y_Y
T.T
D=
D:
=[
=(
(<_>)
:c
*<|:-{)}
*<|:-)
*<|:^) }
*<:-)
:-7
^o)
*!#*!^*&:-)
!:-)
8<
)8-)
\\\';./
(-_-)
::=))
8==8
:-i
[-x
<(((">
,:-)
o_o
35277
=o
*SHOCKED*
+-(
:-V
(*^_^*)
(-::-)
=+o()
:-&
:-Y
8-}
(c:
~:-P
o{-<]:
O-\\-<]:
0-<-<):
o<[^(
;-/
\':-/
8-X
(>.<) zzZ
(s)
u_u
#)
#(,\'%/)
C:
=o)
[______]
:|)
(^_^)
+:-)
=:-#}
(:-#
):-)
g-)
:^J
^&^
:-1
:^,
;^)
:-d
@x
(sn)
~~~~8}
(so)
X P
=.=
(X^(*
}:8>
:-M
:-W
:-`
:-( <|
(*)
*~*
/ \\
:-p
:pp
$:-$
*STOP*
(st)
-.-
@?@
&;-P
B:-)
B :-)
(8-{)}
/8^{~
(#)
/\'
\\m/<(^_^)>\\m/
*SURPRISED*
{:o
:o
:#
`:-)
oxx:{}:::::::>
/________|___|
---(|||]==[]
=;
:-{ }
:^y
:-8
:-v
&-|
(t)
-(:)(0)=8
>[I
(:>-<
:-)---
*-)
(n)
*THUMBS UP*
(y)
^
=_=
*TIRED*
(:|
0000(0)(0)0000
8-;)
:-J
:-A
*!#*!^*&:-
=-HHHH
>:-|
:-)))
@:I
<:>==
(tu)
=-o
(o|o)
(um)
X:-/
=):-)
:\\
**==
|:-|
>.<
>:*
}:(
:<|
::-)
:u)
:n)
}(:-(
@,.,@
(\';.;\')
%*}
:-[]
(:-\\
(o^_^)o
:-w
:-h
:-)X
d:)
{(:-)
B-|
(|:-)
]-I
(8-)
:-)8
-_-
*WHINING*
:-"
;^?
(w)
())=(
(`_^)
;p
;O)
;-P
~_^
<):^/
*|:-)
8<:-)
8 :-)
-=#:-)
-=#:-) /
:-)8 :
,-}
(xx)
_/)
|-()
|^O
>:O
:-(0)
=:-0
@@(: l)
:-l
<(-.-)>
:-( )
:--------)
(@ @)
:-0>
|-P
->=:-)';
my $regex = qr/([8:;]-?[)DP}>]|[[({<]-?[8:;])/p;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html