它让我疯狂,因为我认为这应该是一个简单的问题:(
在这种情况下,我想创建一个正则表达式,提取下面的文本"这是一个句子"。在这种情况下,它的" 3.43"和" 3.42"例如:
This is a sentence 1023 hello:
3.43
This is a sentence 245 byebye:
3.42
我写了正则表达式:
y = re.compile(r'This is a sentence.*\n(.*)|\n(.*)').search(mytext).groups()
然而,这给了我输出"无"对于pycharm中的两种情况。奇怪的是,regex101表明它能够在两种情况下捕获文本。见下面的链接。
https://regex101.com/r/mYDALr/2/
知道为什么Pycharm中的输出是"无?"
要添加,有没有办法打印" 3.42"或" 3.43"视具体情况而定?我不知道该怎么做,所以我决定使用.groups()。我知道我们可以打印.group(1)或.group(2)但在我的情况下,我不知道第一种情况或第二种情况是否会发生,所以我不知道要打印哪种情况。
任何帮助将不胜感激!
编辑: 我已经使用了提供的解决方案,但现在的问题是,我想在不同的文档中搜索正则表达式字符串,但是例如文件A和文件B的提取文本是不同的编码?见下面的例子。所以正则表达式适用于文件A但不适用于文件B.当我在文件B中打印一行时,它会在你打印(copied_line)时输出奇怪的字符串。
答案 0 :(得分:1)
>>> test = """This is a sentence 1023 hello:
... 3.43
...
... This is a sentence 245 byebye:
...
... 3.42"""
>>> import re
>>> re.findall(r'(?:This is a sentence.*)\n+(.*)', test)
['3.43', '3.42']
>>> re.findall(r'(?:This is a sentence.*)\s+(.*)', test)
['3.43', '3.42']
我建议\s
超过\n
以获得跨平台线路支持。