gpt4 book ai didi

python - 使用正则表达式从给定的单词开始获取字符串的一部分,直到字符串的结尾(包含换行符的字符串)

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:08 26 4
gpt4 key购买 nike

import re

stri = "Hello guys.\nHow are you doing?\nI hope you have sweet dreams tonight."
regex = re.compile("guys[.\n]*$")

print regex.findall(stri)

我知道 . 在正则表达式中可以是除换行符之外的任何字符,[xy] 表示 x 或 y,* 在字符之后表示该字符的任意数量,$ 表示字符串的结尾。那么,为什么 "guys[.\n]*$" 不给我 "guys.\n你好吗?\n我希望你今晚有好梦。"

最佳答案

你把句点放在一个字符类中,它是一个的地方,它将只匹配一个.字符,没有别的。 [...] 表示该类中包含的任何文字 字符。

您想使用 re.DOTALL configuration constant相反:

regex = re.compile("guys.*$", re.DOTALL)

或者,您应该将 . 保留在字符类之外,并将其与 \n 换行符一起使用:

regex = re.compile("guys(?:.|\n)*$")

演示:

>>> import re
>>> stri = "Hello guys.\nHow are you doing?\nI hope you have sweet dreams tonight."
>>> regex = re.compile("guys.*$", re.DOTALL)
>>> print regex.findall(stri)
['guys.\nHow are you doing?\nI hope you have sweet dreams tonight.']

关于python - 使用正则表达式从给定的单词开始获取字符串的一部分,直到字符串的结尾(包含换行符的字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466482/

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