正则表达式 - 匹配以获取\ r \ n之前和之后的单词

时间:2014-03-16 21:08:29

标签: python regex

为什么我的正则表达式不匹配?

SOURCE[\s]*[:]*[\s]*(\r\n|\r|\n)*[\[#x3000\]]*[A-Za-z \!\.\-]*

文本

\xa0SOURCE:\r\nHult International Business School\r\n\r\n\r\n\r\n\r\nSUBJECT: ENTREPRENEURSHIP (92%); 

我的正则表达式尝试。它似乎在这里工作得很好。 http://regex101.com/r/aB7nJ2

出于某种原因,只有[\ s]捕获了\ r \ n。我不明白为什么。使用[\ s] *解决了它。

2 个答案:

答案 0 :(得分:0)

你的正则表达式是defined with a raw string吗?如果是这样,它应匹配:

In [25]: import re

In [26]: text = '\xa0SOURCE:\r\nHult International Business School\r\n\r\n\r\n\r\n\r\nSUBJECT: ENTREPRENEURSHIP (92%);'

In [27]: re.search(r'SOURCE[\s]*[:]*[\s]*(\r\n|\r|\n)*[\[#x3000\]]*[A-Za-z \!\.\-]*', text)
Out[27]: <_sre.SRE_Match at 0xb0bffa0>

来自the docs

  

原始字符串表示法(r&#34; text&#34;)使正则表达式保持正常。没有   它,正则表达式中的每个反斜杠(&#39; \&#39;)都必须是   以另一个为前缀以逃避它。

答案 1 :(得分:0)

缺少一些逃脱?

SOURCE[\s]*[:]*[\s]*(\\r\\n|\\r|\\n)*[\[#x3000\]]*[A-Za-z \!\.\-]*