如何在python中编写字符类内的单词边界而不丢失其含义?我希望在单词边界(\b)的定义中添加下划线(u)

如何在python中编写字符类内的单词边界而不丢失其含义?我希望在单词边界(\b)的定义中添加下划线(u),python,regex,Python,Regex,我知道单词边界的定义是(?)? 我希望在单词边界的定义中添加下划线(可选) 这样做的一个方法是我们可以简单地修改定义 像新的一样是(?)(?)? ,但不希望使用太长的表达式 简单的方法可以是 如果我可以在字符类中编写单词边界,那么在字符类中添加下划线将非常容易,就像[\b-]一样,但问题是将\b放在字符类中,即[\b]意味着空格字符而不是单词边界 请告诉解决方案,即如何将\b放入字符类而不丢失其原始含义。您可以使用lookarounds: (?:\b|(?<=_))word(?=\b|_)

我知道单词边界的定义是
(?)?
我希望在单词边界的定义中添加下划线(可选)

这样做的一个方法是我们可以简单地修改定义 像新的一样是
(?)(?)?
,但不希望使用太长的表达式

简单的方法可以是 如果我可以在字符类中编写单词边界,那么在字符类中添加下划线将非常容易,就像
[\b-]
一样,但问题是将
\b
放在字符类中,即
[\b]
意味着空格字符而不是单词边界


请告诉解决方案,即如何将
\b
放入字符类而不丢失其原始含义。

您可以使用lookarounds:

(?:\b|(?<=_))word(?=\b|_)
^^^^^^^^^^^^^     ^^^^^^^
另一种解决方案是使用自定义的单词边界,如
(?/
(?![^\W_])
(请参阅):


rx=r”(?它不起作用!!s=“aakash_goel”在这种情况下不起作用。另外,我不希望对类似split(“u”)的字符串进行任何操作。我希望在此搜索“goel”。这取决于“不起作用”的含义“.看,如果
goel
是搜索词,它就被找到了。而且。请正确地测试我的建议,你会看到两者都起作用。用搜索词替换
word
(第二种解决方案,如果它包含特殊字符,你甚至可以使用
re.escape(word)
,它应该起作用:
rx=r”(?:\b|(?比方说,我们有s=“aakash goel”和s1=“aakash_goel”。现在,我希望在s和s1中成功地进行“goel”搜索。因此,我所做的是修改\b的定义,它也在工作。但我希望为它做一些简短的正则表达式,而不是使用它的定义。rx=r”(?)?(?我的解决方案按您期望的方式工作。请进行您需要的任何测试,您将看到。您可以发布一些数据和您想要的输出吗?
import re
rx = r"(?:\b|(?<=_))word(?=\b|_)"
s = "some_word_here and a word there"
print(re.findall(rx,s))
rx = r"(?<![^\W_])word(?![^\W_])"