Python正则表达式编号或字符串前后的空格

Python正则表达式编号或字符串前后的空格,python,regex,Python,Regex,我正在学习正则表达式,有下面的问题 我参考了这篇文章,得到了以下信息 \b匹配空字符串,但仅在a的开头或结尾 单词单词定义为字母数字或下划线的序列 字符,因此单词的结尾用空格或 非字母数字、非下划线字符。注意,形式上,\b是 定义为\w和\w字符之间的边界(反之亦然) 反之亦然),或介于\w和字符串的开头/结尾之间,因此 视为字母数字的精确字符集取决于 UNICODE和区域设置标志的值。例如,r'\bfoo\b' 匹配“foo”、“foo.”、“(foo)”、“bar foo baz”,但不匹配

我正在学习正则表达式,有下面的问题

我参考了这篇文章,得到了以下信息

\b匹配空字符串,但仅在a的开头或结尾 单词单词定义为字母数字或下划线的序列 字符,因此单词的结尾用空格或 非字母数字、非下划线字符。注意,形式上,\b是 定义为\w和\w字符之间的边界(反之亦然) 反之亦然),或介于\w和字符串的开头/结尾之间,因此 视为字母数字的精确字符集取决于 UNICODE和区域设置标志的值。例如,r'\bfoo\b' 匹配“foo”、“foo.”、“(foo)”、“bar foo baz”,但不匹配“foobar”或 “foo3”。在字符范围内,\b表示退格 字符,以便与Python的字符串文本兼容

代码:

我想找到所有的案例 字符串前后必须有数字或空格

因此,当我搜索
'cat'
时,
'1cat4'
'1cat'
'cat'
'(cat)
应该返回正值


我应该如何更新代码?

看起来您想要找到任何被非字母字符包围的猫,或者在文本的开头或结尾:

abc="cat. A \ncat and a rat\ncan't be friends, how about 1cat23 and concatenate?"
re.findall(r'(?:[^a-zA-Z]|^)(cat)(?:[^a-zA-Z]|$)',abc)
#['cat', 'cat', 'cat']
以下是被发现的猫的上下文:


不幸的是,此正则表达式不识别成群的猫(“猫猫”、“猫猫”等)。如果这是一个问题,您可以向正则表达式添加更多子句。

为什么希望
'cat'
'(cat)
匹配?在
cat
前后没有数字和空格。如果您只想匹配下一个是否包含您的特殊字符串,为什么不检查str\uu中的
'cat'。似乎没有严格的标准给出了“(cat)”示例。@modesitt这也会找到“concatenate”。不确定OP是否需要它。是的,我也是。可能不会,但_(ツ)_/¯
abc="cat. A \ncat and a rat\ncan't be friends, how about 1cat23 and concatenate?"
re.findall(r'(?:[^a-zA-Z]|^)(cat)(?:[^a-zA-Z]|$)',abc)
#['cat', 'cat', 'cat']
re.findall(r'(?:[^a-zA-Z]|^)cat(?:[^a-zA-Z]|$)',abc)
#['cat.', '\ncat ', '1cat2']