我有这个:
myText = str(^123"I like to"^456&U"play video games and"$"eat cereal")
我想提取引号之间的所有内容(包括引号),在$
符号之前和之后拆分所有内容,然后将它们附加到嵌套列表中。 E.g。
myTextList = [["我喜欢","玩视频游戏和"],["吃麦片"]]
这就是我的尝试:
tempTextList = []
for text in re.findall('(?<=\$)"[^"]*"(?<!\^)',myText,re.DOTALL)
tempTextList.append(text)
myTextList.append(tempTextList)
我使用网站https://www.regex101.com/#python并尝试了几乎所有我能想到的内容......
(?!\$)"(?!\^\00\+\-\&)[^"].*"
等...
re.findall部分并没有按我想要的方式工作。
有人能指出我正确的方向吗?
由于
答案 0 :(得分:2)
您可以将"[^"]*"
正则表达式与re.findall
:
import re
s = 'myText = str(^123"I like to"^456&U"play video games and"$"eat cereal")'
print(re.findall(r'"[^"]*"', s))
请参阅demo
它匹配双引号所需的双引号子串:['"I like to"', '"play video games and"', '"eat cereal"']
。
请注意,"[^"]*"
与"
匹配,后跟除"
之外的零个或多个字符,后跟"
。
如果您需要在没有双引号的情况下获取"..."
内的内容,您可以使用捕获机制:
r'"([^"]*)"'
re.findall
只返回第1组中的捕获。请参阅another demo。