为什么我的正则表达式不匹配?
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] *解决了它。
答案 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 \!\.\-]*