gpt4 book ai didi

python - 如何在正则表达式中隐藏匹配之后和关键字之前的文本?

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:37 25 4
gpt4 key购买 nike

我想匹配 KEYWORD 之前的任何用户评论。另外,我想在关键字之前的最后一条评论之后跳过变量不重要的文本。

import re`

string = '''
COMMENTS:
first comment /user_x
second comment
two lines /user_y
Here is some unimportant text.
KEYWORD:
Don't match comments or anything else after first keyword like this /user_x
KEYWORD: <- again
Also ignore same keyword which could appear serveral times.
'''

我的结果不会跳过不重要的文本。

pattern = re.compile(r'(?<=COMMENTS:)(.+?/(user_x|user_y))+?(?:.+?)(?=KEYWORD:)', flags=re.DOTALL)
match = re.search(pattern, string).group(0)

print(match)

我想要以下输出:

first comment /user_x  
second comment
in two lines /user_y

我做错了什么?非常感谢

最佳答案

您可以使用

pattern = re.compile(r'COMMENTS:\s*((?:(?:(?!KEYWORD:).)+?/(?:user_x|user_y))+).+?KEYWORD:', flags=re.DOTALL)
match = re.search(pattern, s)
if match:
print(match.group(1))

输出不再包含不相关的行:

first comment /user_x  
second comment
two lines /user_y

请参阅Python demo

详细信息

  • COMMENTS: - 文字子字符串
  • \s* - 0+ 个空格
  • ((?:(?:(?!KEYWORD:).)+?/(?:user_x|user_y))+) - 捕获组 1 (match.group( 1) 如果存在匹配,将保留该值):一次或多次重复
    • (?:(?!KEYWORD:).)+? - 不启动 KEYWORD: 的任何字符,一个或多个但尽可能少字符序列
    • / - 一个 / 字符
    • (?:user_x|user_y) - user_xuser_x
  • .+?KEYWORD: - 任意 1 个或多个字符后的 KEYWORD:,尽可能少。

请参阅regex demo .

关于python - 如何在正则表达式中隐藏匹配之后和关键字之前的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54651288/

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