Python:搜索文本中的"正则表达式的意外结束"

use*_*003 0 python regex

以下代码给出了一个错误:"正则表达式的意外结束"

import re
my_text = "[abc"
if re.search(my_text, "a"):
    print "found!"
Run Code Online (Sandbox Code Playgroud)

这是因为my_text中的单个方括号.这很好用:

my_text = "[abc]"
Run Code Online (Sandbox Code Playgroud)

首先,我不明白为什么一个支架应该是一个问题.不匹配的括号不在正则表达式中,而是在正在搜索的字符串中.

我可以逃脱支架:

my_text = "\[abc"
Run Code Online (Sandbox Code Playgroud)

但还有其他解决方案吗?我更喜欢不乱用字符串的长度,因为我也做像my_text [some_index:]之类的东西

the*_*eye 7

re.search函数接受模式作为第一个参数,实际字符串作为第二个参数.功能签名如下

re.search(pattern, string, flags=0)
Run Code Online (Sandbox Code Playgroud)

所以,只需更改参数的顺序即可.

import re
my_text = "[abc"
if re.search("a", my_text):
    print "found!"
Run Code Online (Sandbox Code Playgroud)

但是检查其他字符串中字符串是否存在的最简单方法是使用in运算符,就像这样

print "fourth" in "thefourtheye"  # True
Run Code Online (Sandbox Code Playgroud)

引用文档的Notes部分

当s是字符串或Unicode字符串对象时,in和not in操作就像子字符串测试一样.在2.3之前的Python版本中,x必须是长度为1的字符串.在Python 2.3及更高版本中,x可以是任意长度的字符串.