Python中的模式搜索

Python中的模式搜索,python,python-3.x,re,Python,Python 3.x,Re,我正在尝试在另一个字符串“test1 Test2 Test^Test”中搜索字符串“Test^”。我发现 re.search(r'\bTest\^\B', 'test1 Test2 Test^ test') 但我会工作的 re.search(r'\bTest\^\b', 'test1 Test2 Test^ test') 这是行不通的。我有点困惑,因为我认为应该使用\b作为“Test^”的单词边界(两边都有一个空格。这是因为Python将字符串的结尾视为“^”,所以它是非单词边界吗 谢谢。\

我正在尝试在另一个字符串“test1 Test2 Test^Test”中搜索字符串“Test^”。我发现

re.search(r'\bTest\^\B', 'test1 Test2 Test^ test')
但我会工作的

re.search(r'\bTest\^\b', 'test1 Test2 Test^ test')
这是行不通的。我有点困惑,因为我认为应该使用\b作为“Test^”的单词边界(两边都有一个空格。这是因为Python将字符串的结尾视为“^”,所以它是非单词边界吗


谢谢。

\b
表示从“文字字符”转换为“非文字字符”或从“文字字符”转换为“非文字字符”。文字字符是字母数字字符,加下划线,
^
不是文字字符,
(空格),因此从一个到另一个的转换不是一个单词边界;正如所观察到的,它匹配
\B
,而不是
\B
。如果要进行特定于空间的检查,则需要显式使用look ahead
(?=)
或look ahead
(?我认为插入符号被视为单词边界,即分隔符。大写为“\B”的插入符号被忽略,因此不查找单词边界。插入符号是非单词字符

所以,它不应该是只寻找单词的正则表达式模式的一部分


谢谢。这就解释了。因为我仍然想使用非单词边界,所以我使用了r'\b测试\^(?=\W'),它可以工作!