gpt4 book ai didi

regex - 如何使用正则表达式 (RegEx) 在某些模式之间提取文本?

转载 作者:行者123 更新时间:2023-12-01 03:11:07 27 4
gpt4 key购买 nike

我的文字:

27/07/18, 12:02 PM - user_a: https://www.youtube.com/
Watch this
27/07/18, 12:15 PM - user_b: <Media omitted>
27/07/18, 12:52 PM - user_b: Read this fully
some text
some text
.
some text
27/07/18, 12:56 PM - user_c: text ..

这里我想提取用户发送的消息。我尝试了两个正则表达式。但我没有得到我想要的答案

第一个正则表达式:
re.findall(r''+user_name+ ':(.*)', data)

在这里我无法提取文本多行

第二个正则表达式:
re.findall(r''+ user_name + ':[^(:)]*', data)

在这里,我无法提取具有超链接的全文。即,我只能获得“https”。它将符号“:”视为端点。

我该如何处理?任何类型的建议都会非常好且有帮助

最佳答案

您可以使用以下模式:

user_b: (.*?)(?=^[0-9]{2}/[0-9]{2}/[0-9]{2})

正则表达式演示 here .

注意 re.MULTILINE的用法和 re.DOTALL .需要第一个标志来匹配多行文本上的行模式的开头,而 re.DOTALL需要启用 .也匹配换行符。

在 Python 中:
import re
data = '''
27/07/18, 12:02 PM - user_a: https://www.youtube.com/
Watch this
27/07/18, 12:15 PM - user_b: <Media omitted>
27/07/18, 12:52 PM - user_b: Read this fully
some text
some text
.
some text
27/07/18, 12:56 PM - user_c: text ..
'''
usern = 'user_b'

pattern = re.compile(r""+usern+r": (.*?)(?=^[0-9]{2}/[0-9]{2}/[0-9]{2})",re.DOTALL|re.MULTILINE)
print(re.findall(pattern,data))

打印:
['<Media omitted>\n', 'Read this fully\nsome text\nsome text\n.\nsome text\n']

关于regex - 如何使用正则表达式 (RegEx) 在某些模式之间提取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52117375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com