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

时间:2014-01-13 16:25:11

标签: python regex

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

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:]

之类的东西

2 个答案:

答案 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)

好像你认为re.search的第二个参数是正则表达式模式。

不,第一个参数是模式,第二个参数是字符串。

以下是re.search功能的签名:

re.search(pattern, string, flags=0)

顺便说一下,您不需要使用正则表达式来检查字符串包含。使用in运算符。

>>> "a" in "[abc"
True
>>> "d" in "[abc"
False