以下代码给出了一个错误:“意外结束正则表达式”
import re
my_text = "[abc"
if re.search(my_text, "a"):
print "found!"
这是因为my_text中的单个方括号。这很好用:
my_text = "[abc]"
首先,我不明白为什么一个支架应该是一个问题。不匹配的括号不在正则表达式中,而是在正在搜索的字符串中。
我可以逃脱支架:
my_text = "\[abc"
但还有其他解决方案吗?我更喜欢不搞乱字符串的长度,因为我也做像my_text [some_index:]
之类的东西答案 0 :(得分:7)
re.search
函数接受模式作为第一个参数,实际字符串作为第二个参数。功能签名如下
re.search(pattern, string, flags=0)
所以,只需更改参数的顺序。
import re
my_text = "[abc"
if re.search("a", my_text):
print "found!"
但检查其他字符串中字符串是否存在的最简单方法是使用in
运算符,如下所示
print "fourth" in "thefourtheye" # True
引自docs
的备注部分当s是字符串或Unicode字符串对象时,in和not in 操作就像一个子串测试。在2.3之前的Python版本中,x 必须是一个长度为1的字符串。在Python 2.3及更高版本中,x可能是一个 任何长度的字符串。
答案 1 :(得分:3)