用于查找两个\n\n和\n\n之间的所有内容的Python正则表达式

用于查找两个\n\n和\n\n之间的所有内容的Python正则表达式,python,regex,wildcard,Python,Regex,Wildcard,我有一个大的文本字符串,init有几个块看起来非常类似于这个 text = '\n\n(d)In the event of this happens a Fee of \xc2\xa32,000 gross, on each such occasion.\n\n' 使用以下代码,我可以找到所有货币实例: import re re.finall('\xa3(.*)', text) 但是,如果发生这种情况,这只返回逗号\xc2\xa32000总费用,而不是整个块,我希望返回提到Unicode

我有一个大的文本字符串,init有几个块看起来非常类似于这个

text = '\n\n(d)In the event of this happens a Fee 
of \xc2\xa32,000 gross, on each such occasion.\n\n'
使用以下代码,我可以找到所有货币实例:

import re
re.finall('\xa3(.*)', text)
但是,如果发生这种情况,这只返回逗号\xc2\xa32000总费用,而不是整个块,我希望返回提到Unicode for British pounds\xa3的块

import re 
text = '\n\nblock1\xa3block1.\n\nblock2\x80block2\n\nblock3\xa3block3\n\n' 
result= re.findall('.*\xa3.*', text) #capture only blocks containing pound symbol and discards block2 that contains euro 
print(result) 

我建议使用这个正则表达式:

text = ('\n\nthis is not wanted\n\n'
        '(d)In the event of this happens a Fee\n'
        'of \xc2\xa32,000 gross, on each such occasion.\n\n'
        'another wanted line with pound: \xc2\xa31,000\n\n'
        'this is also not wanted\n\n')

re.findall(r'(?:.+\n)*.*\xa3(?:.+\n)*', text)
这将查找包含至少一个\xa3的非空行的所有多行块


正如@wiktor stribiżew在一篇评论中指出的,这只会发现在英镑符号之后有另一个字符的区块;这似乎是您想要的,所以没有问题,但应该提到。

为什么不只是'\n\n.*\n\n'@PatrickHaugh'返回文本字符串中的每个文本块?我希望将其与'\xa3.*'\n\n.*\xa3.*\n\n结合使用,如果双\n之间只有一行,则\n\n.*\xa3.*\n\n将起作用。分隔符之间是否可以有两行,即一个换行符?在上面的示例中,这是一个在费用之后的换行符吗?如果是,则为Daniel的正则表达式。@Danielle正如建议的那样,它只适用于双精度之间的1行\n,在整个文档中,分隔符之间可以有2到3行分隔符。确实,我们尝试过了。有你?原始输入为text='\n\n如果发生这种情况,每次此类事件的费用\n为\xc2\xa32000毛额。\n\n'。您的正则表达式不返回双换行分隔符之间的字符串部分。此r'?:.+\n*.\xa3?:.+\n*'是展开模式的一个很好的示例,但第二个+量词不允许模式与子字符串内一行末尾的符号匹配。右。在这种情况下,这似乎是正确的。OP期望在数字的磅符号后面有一些东西。但值得一提的是,谢谢!