我想在第三次出现之前得到所有字符串:
Q: asd:rad:asd:ad asd:fztf:123
A: asd:rad:asd
我使用的是:
[^:]*:[^:]*:[^:]*
给了我答案: ad asd:fztf:123
任何指导都将不胜感激。
答案 0 :(得分:1)
你的正则表达式几乎是完美的。您只需使用锚^
^[^:]*:[^:]*:[^:]*
^---- Here
<强> Working demo 强>
更新:刚刚注意到Gurman在他的评论中暗示了这一点,因此他的信用
答案 1 :(得分:0)
我会用它,虽然我不知道它是否是最好的:^.*?:.*?:.*?(?=:)
^
表示只搜索字符串的开头。
.*?:
表示随后的内容:。我们想要两次。请注意?
以使表达式不贪婪。
.*?
与之前的行基本相同,但未捕获:
。
(?=:)
是一个积极的展望。这意味着在捕获的正则表达式之后会有一个:
,但它不应该被捕获。
答案 2 :(得分:0)
也提供非正则表达方式:
string = """
Q: asd:rad:asd:ad asd:fztf:123
A: asd:rad:asd
"""
splitted = [":".join(line.split(":")[:3])
for line in string.split("\n")
if len(line) > 1]
print(splitted)
# ['Q: asd:rad', 'A: asd:rad']