Eloquent JavaScript


The mechanics of matching



Download 2,16 Mb.
Pdf ko'rish
bet86/165
Sana09.07.2022
Hajmi2,16 Mb.
#762987
1   ...   82   83   84   85   86   87   88   89   ...   165
Bog'liq
Eloquent JavaScript

The mechanics of matching
Conceptually, when you use
exec
or
test
, the regular expression engine looks
for a match in your string by trying to match the expression first from the start
of the string, then from the second character, and so on, until it finds a match
or reaches the end of the string. It’ll either return the first match that can be
found or fail to find any match at all.
To do the actual matching, the engine treats a regular expression something
like a flow diagram. This is the diagram for the livestock expression in the
previous example:
" "
boundary
boundary
Group #1
"chicken"
"cow"
"pig"
digit
"s"
Our expression matches if we can find a path from the left side of the diagram
to the right side. We keep a current position in the string, and every time we
move through a box, we verify that the part of the string after our current
position matches that box.
So if we try to match
"the 3 pigs"
from position 4, our progress through
the flow chart would look like this:
• At position 4, there is a word boundary, so we can move past the first
box.
• Still at position 4, we find a digit, so we can also move past the second
box.
• At position 5, one path loops back to before the second (digit) box,
while the other moves forward through the box that holds a single space
151


character. There is a space here, not a digit, so we must take the second
path.
• We are now at position 6 (the start of
pigs
) and at the three-way branch
in the diagram. We don’t see
cow
or
chicken
here, but we do see
pig
, so
we take that branch.
• At position 9, after the three-way branch, one path skips the
s
box and
goes straight to the final word boundary, while the other path matches an
s
. There is an
s
character here, not a word boundary, so we go through
the
s
box.
• We’re at position 10 (the end of the string) and can match only a word
boundary. The end of a string counts as a word boundary, so we go
through the last box and have successfully matched this string.

Download 2,16 Mb.

Do'stlaringiz bilan baham:
1   ...   82   83   84   85   86   87   88   89   ...   165




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish