Naqshning so'nggi paydo bo'lishi bilan Regex split mag'lubiyatga

I am using regex to split a string by into book and author names.

re.split(r'\bby\b', text, 0, re.I)

But problem arises when the book name contains the word "by" (e.g. Death by Blackhole by Tyson => ['Death', 'by Black...'])

Qatorni qidirish naqshining so'nggi ko'rinishi bilan qanday ajratish mumkin?

Menda bu erda foydali bo'lishi mumkin, ammo hozirda to'g'ri sintaksisni tuzishga harakat qiladigan sochlarni ajratish.

2
re.split (r '\ bby \ b (?! * \ Bby \ b) matnini, 0, re.I)
qo'shib qo'ydi muallif Wiktor Stribi?ew, manba
Natijani faqatgina mos kelmaysizmi? Ushbu ^ (. +) \ Bby \ b (. +) $ muallifga ham, unvonga ham tegishli ( + ochko'z, shuning uchun oxirgi voqea olinadi).
qo'shib qo'ydi muallif ssc-hrep3, manba
Natijani faqatgina mos kelmaysizmi? Ushbu ^ (. +) \ Bby \ b (. +) $ muallifga ham, unvonga ham tegishli ( + ochko'z, shuning uchun oxirgi voqea olinadi).
qo'shib qo'ydi muallif ssc-hrep3, manba

8 javoblar

Splitdan qayta tiklashingiz mumkin:

parts = re.split(r'\bby\b', text, 0, re.I)
book, author = 'by'.join(parts[:-1]), parts[-1]

Yoki to'liq bajaring:

match = re.match(r'(.*)\bby\b(.*)', text, re.I)
3
qo'shib qo'ydi

Splitdan qayta tiklashingiz mumkin:

parts = re.split(r'\bby\b', text, 0, re.I)
book, author = 'by'.join(parts[:-1]), parts[-1]

Yoki to'liq bajaring:

match = re.match(r'(.*)\bby\b(.*)', text, re.I)
3
qo'shib qo'ydi

oldida ochko'z . * bilan findall foydalanishingiz mumkin:

re.findall(r'(.*)\s+by\s+(.*)', text, re.I)

See it on repl.it

3
qo'shib qo'ydi

oldida ochko'z . * bilan findall foydalanishingiz mumkin:

re.findall(r'(.*)\s+by\s+(.*)', text, re.I)

See it on repl.it

3
qo'shib qo'ydi

Ushbu yagona regexdan foydalanishingiz mumkin:

re.search ("(. * (by)". *) tomonidan (. *)), matn) .group (2,4)

enter image description here

2
qo'shib qo'ydi

Ushbu yagona regexdan foydalanishingiz mumkin:

re.search ("(. * (by)". *) tomonidan (. *)), matn) .group (2,4)

enter image description here

2
qo'shib qo'ydi

Buni sinashingiz mumkin, u sizning namunangizda sinovdan o'tadi, oxiriga mos keladi

by(?!.*by.*)
1
qo'shib qo'ydi

Buni sinashingiz mumkin, u sizning namunangizda sinovdan o'tadi, oxiriga mos keladi

by(?!.*by.*)
1
qo'shib qo'ydi
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming