Python re.search字符串搜索打开和关闭括号[]

Python re.search字符串搜索打开和关闭括号[],python,regex,Python,Regex,有人能解释一下为什么我的正则表达式对下面的正则表达式不满意吗。有人能告诉我如何克服并检查[]匹配吗 >>> str = li= "a.b.\[c\]" >>> if re.search(li,str,re.IGNORECASE): ... print("Matched") ... >>> >>> str = li= r"a.b.[c]" >>> if re.search(li,str,re.IGNOR

有人能解释一下为什么我的正则表达式对下面的正则表达式不满意吗。有人能告诉我如何克服并检查[]匹配吗

>>> str = li= "a.b.\[c\]"
>>> if re.search(li,str,re.IGNORECASE):
...    print("Matched")
...
>>>
>>> str = li= r"a.b.[c]"
>>> if re.search(li,str,re.IGNORECASE):
...    print("Matched")
...
>>>
如果我去掉开括号和闭括号,我会得到匹配的结果

>>> str = li= 'a.b.c'
>>> if re.search(li,str,re.IGNORECASE):
...    print("matched")
...
matched

您正在尝试匹配字符串
a.b.\\[c\\]
,而不是
a.b.[c]

试试这个:

import re
li= r"a\.b\.\[c\]"
s = "a.b.[c]"
if re.search(li, s, re.IGNORECASE):
    print("Matched")

顺便说一下,这里不需要
re.IGNORECASE

您正在尝试匹配字符串
a.b.\\[c\\]
,而不是
a.b.[c]

试试这个:

import re
li= r"a\.b\.\[c\]"
s = "a.b.[c]"
if re.search(li, s, re.IGNORECASE):
    print("Matched")

re.IGNORECASE
在这里不需要。

您可以尝试以下代码:

import re
str = "a.b.[c]"
if re.search(r".*\[.*\].*", str):
   print("Matched")
输出:

Matched

您可以尝试以下代码:

import re
str = "a.b.[c]"
if re.search(r".*\[.*\].*", str):
   print("Matched")
输出:

Matched

不要使用
str
作为变量名,因为它会隐藏内置的。不要使用
str
作为变量名,因为它会隐藏内置的。我是否也应该转义圆点?@Bhaskarvedula转义圆点是个好主意,因为
将匹配任何内容和
\。
将只匹配
。这不是必须的,它只是让它更准确。我是否也要逃逸dot?@Bhaskarvedula逃逸dot是个好主意,因为
将匹配任何内容,而
\。
将只匹配
。这不是必须的,只是让它更准确。