处理" \ n \ t \ t"与正则表达式

时间:2016-02-11 21:30:18

标签: python regex string

我在字符串str(dList)中有以下子字符串:

"addressRegion">\n\t\t\t\t\t\t\t\t\tMA\n\t\t\t\t\t\t\t\t</span>

我正在尝试使用re.search来推出&#34; MA&#34;用这个:

state = re.search(r'"addressRegion">\n\t\t\t\t\t\t\t\t\t(.+?)\n\t',str(dList))
然而,这似乎并不起作用。我明白这可能是因为&#34; /&#34;被处理。我无法弄清楚如何处理这个问题。

2 个答案:

答案 0 :(得分:2)

正则表达真的没有必要

In [22]: str = '<span class="addressRegion">\n\t\t\t\t\t\t\t\t\tMA\n\t\t\t\t\t\t\t\t</span>'

In [23]: from bs4 import BeautifulSoup

In [24]: soup = BeautifulSoup(str, 'html.parser')

In [25]: soup.text
Out[25]: u'\n\t\t\t\t\t\t\t\t\tMA\n\t\t\t\t\t\t\t\t'

In [26]: soup.text.strip()
Out[26]: u'MA'

答案 1 :(得分:1)

<强>更新 如果你真的想使用正则表达式,这就是你可以做的方式,但我认为@ cricket_007的解决方案是更好的方法。

您需要做的就是用另一个反斜杠来逃避反斜杠。你也可以摆脱'\ t'的重复:

>>> s = '"addressRegion">\n\t\t\t\t\t\t\t\t\tMA\n\t\t\t\t\t\t\t\t</span>'
>>> re.search('.*\\n(\\t)+(.*?)\\n(\\t)+.*',s).group(2)
'MA'