Как найти это слово «অশুভ» в моей строке с помощью регулярного выражения? - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь найти это слово с помощью регулярного выражения.Но проблема, которую я обнаружил, заключается в том, что всякий раз, когда я пытался использовать слово border "\ b", оно не работает точно.И если я не использовал RegEx, то он будет показывать другой вывод, где он использовался, например, 'অশুভৰ' 'অশুভ_লক্ষণ'.Я хочу исключить эти результаты и хочу только это слово точно.

Это строка: "মেকুৰীয়ে ৰাস্তা কাটিলে অশুভ বুলি ধৰা হয়, দুৱাৰডলিত বহাটো অশুভনীয়, যি লক্ষণ অশুভৰ পৰিচায়ক"

Ответы [ 3 ]

1 голос
/ 07 мая 2019

Вы можете просто использовать индекс, чтобы найти слово.

>>> s="মেকুৰীয়ে ৰাস্তা কাটিলে অশুভ বুলি ধৰা হয়, দুৱাৰডলিত বহাটো অশুভনীয়, যি লক্ষণ অশুভৰ পৰিচায়ক"
>>> s.index("অশুভ")
23
0 голосов
/ 09 мая 2019

Вы можете считать \b просто ярлыком для определения собственного набора граничных условий.Ниже я показал, как использовать \b, затем как использовать явный пробел, затем как сделать то же самое, но с утверждениями lookbehind / lookahead.

Разница между двумя последними подходами заключается в том, что [ ] будет захватывать пробелы с обеих сторон, в то время как утверждения (и \b) не будут.(Вы можете увидеть это в примере вывода ниже.)

Вы также можете увидеть ниже, что \b отлично работает на двух тестовых примерах, которые вы дали.Но я предполагаю, что вы используете его в более сложных строках или в более сложных регулярных выражениях?

import re

s1="মেকুৰীয়ে ৰাস্তা কাটিলে অশুভ বুলি ধৰা হয়, দুৱাৰডলিত বহাটো অশুভনীয়, যি লক্ষণ অশুভৰ পৰিচায়ক"
s2 = "অশুভৰ অশুভ_লক্ষণ"

pat = r'অশুভ'
m = re.search(pat,s1)
print(m)
m = re.search(pat,s2)
print(m)

pat = r'\bঅশুভ\b'
m = re.search(pat,s1)
print(m)
m = re.search(pat,s2)
print(m)

pat = r'[ ]অশুভ[ ]'
m = re.search(pat,s1)
print(m)
m = re.search(pat,s2)
print(m)

pat = r'(?<= )অশুভ(?= )'
m = re.search(pat,s1)
print(m)
m = re.search(pat,s2)
print(m)

Вывод (python 3.6):

<_sre.SRE_Match object; span=(23, 27), match='অশুভ'>
<_sre.SRE_Match object; span=(0, 4), match='অশুভ'>
<_sre.SRE_Match object; span=(23, 27), match='অশুভ'>
None
<_sre.SRE_Match object; span=(22, 28), match=' অশুভ '>
None
<_sre.SRE_Match object; span=(23, 27), match='অশুভ'>
None
0 голосов
/ 07 мая 2019

Вы можете сделать это с помощью ключевого слова in.

>>> s = "মেকুৰীয়ে ৰাস্তা কাটিলে অশুভ বুলি ধৰা হয়, দুৱাৰডলিত বহাটো অশুভনীয়, যি লক্ষণ অশুভৰ পৰিচায়ক"
>>> "অশুভৰ" in s
True
>>> "অভ" in s
False
...