简体   繁体   English

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

[英]Regex - match to obtain words before and after \r\n

Why doesn't my regex match? 为什么我的正则表达式不匹配?

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

Text 文本

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

My regex tries. 我的正则表达式尝试。 it seems to work nearly okay here. 在这里似乎可以正常工作。 http://regex101.com/r/aB7nJ2 http://regex101.com/r/aB7nJ2

For some reason, only a [\\s] captured the \\r\\n. 由于某些原因,只有[\\ s]捕获了\\ r \\ n。 i don't understand why. 我不明白为什么。 using [\\s]* solved it. 使用[\\ s] *解决了它。

Is your regex pattern defined with a raw string ? 您的正则表达式模式是否用原始字符串定义 If so, it should match: 如果是这样,则应匹配:

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>

From the docs : 文档

Raw string notation (r"text") keeps regular expressions sane. 原始字符串符号(r“文本”)使正则表达式保持理智。 Without it, every backslash ('\\') in a regular expression would have to be prefixed with another one to escape it. 如果没有它,则正则表达式中的每个反斜杠('\\')都必须加上另一个前缀以转义。

缺少一些转义?

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM