如何使用正则表达式在我的字符串中找到“অশুভ”这个词?
How to find this word 'অশুভ' in my string using regular expression?
我正在尝试使用正则表达式查找这个词。但我发现的问题是,每当我尝试使用文字边框“\b”时,它都无法正常工作。
如果我没有使用任何正则表达式,那么它会在使用它的地方显示不同的输出,例如“अशुभू”我想消除这些结果,只想要那个词。
这是字符串:“蜘蛛过马路,恶霸被抓,破门大吉,凶兆”
您只需使用 in
关键字即可。
>>> s = "মেকুৰীয়ে ৰাস্তা কাটিলে অশুভ বুলি ধৰা হয়, দুৱাৰডলিত বহাটো অশুভনীয়, যি লক্ষণ অশুভৰ পৰিচায়ক"
>>> "অশুভৰ" in s
True
>>> "অভ" in s
False
你可以直接使用索引来查找单词。
>>> s="মেকুৰীয়ে ৰাস্তা কাটিলে অশুভ বুলি ধৰা হয়, দুৱাৰডলিত বহাটো অশুভনীয়, যি লক্ষণ অশুভৰ পৰিচায়ক"
>>> s.index("অশুভ")
23
您可以将 \b
视为定义您自己的边界条件集的捷径。我在下面展示了如何使用 \b
,然后是如何使用显式 space,然后是如何使用 lookbehind/lookahead 断言。
最后两种方法的区别在于,[ ]
将捕获任一侧的 space,而断言(和 \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
我正在尝试使用正则表达式查找这个词。但我发现的问题是,每当我尝试使用文字边框“\b”时,它都无法正常工作。 如果我没有使用任何正则表达式,那么它会在使用它的地方显示不同的输出,例如“अशुभू”我想消除这些结果,只想要那个词。
这是字符串:“蜘蛛过马路,恶霸被抓,破门大吉,凶兆”
您只需使用 in
关键字即可。
>>> s = "মেকুৰীয়ে ৰাস্তা কাটিলে অশুভ বুলি ধৰা হয়, দুৱাৰডলিত বহাটো অশুভনীয়, যি লক্ষণ অশুভৰ পৰিচায়ক"
>>> "অশুভৰ" in s
True
>>> "অভ" in s
False
你可以直接使用索引来查找单词。
>>> s="মেকুৰীয়ে ৰাস্তা কাটিলে অশুভ বুলি ধৰা হয়, দুৱাৰডলিত বহাটো অশুভনীয়, যি লক্ষণ অশুভৰ পৰিচায়ক"
>>> s.index("অশুভ")
23
您可以将 \b
视为定义您自己的边界条件集的捷径。我在下面展示了如何使用 \b
,然后是如何使用显式 space,然后是如何使用 lookbehind/lookahead 断言。
最后两种方法的区别在于,[ ]
将捕获任一侧的 space,而断言(和 \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