如何使用正则表达式在我的字符串中找到单词“অশুভ”?

时间:2019-05-07 19:02:58

标签: python regex utf-8 nlp wordnet

我正在尝试使用正则表达式查找此单词。但是我发现的问题是,每当我尝试使用单词border“ \ b”时,它都无法正常工作。 如果我不使用任何RegEx,那么它将在使用过的地方显示不同的输出,例如'অশুভৰ''অশুভ_লক্ষণ'。我想消除这些结果,而只想要那个词。

这是字符串:“মেকুৰীয়েহয়হয়হয়হয়অশুভনীয়অশুভনীয়পৰিচায়কপৰিচায়ক”

3 个答案:

答案 0 :(得分:1)

您可以使用索引来查找单词。

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

答案 1 :(得分:0)

您可以使用in关键字来完成此操作。

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

答案 2 :(得分:0)

您可以将\b视为定义自己的边界条件集的捷径。我在下面显示了如何使用\b,然后如何使用显式空间,然后如何使用后向/超前断言进行相同的操作。

最后两种方法之间的区别在于[ ]将捕获任一侧的空格,而断言(和\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