gpt4 book ai didi

java - 以简单英语列出的项目的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:23 26 4
gpt4 key购买 nike

这是一个人为的例子,但我试图在这里找到一个一般原则。

给定使用这种类似列表的形式用英语书写的短语:

I have a cat
I have a cat and a dog
I have a cat, a dog, and a guinea pig
I have a cat, a dog, a guinea pig, and a snake

我能否使用正则表达式获取所有项目,而不管项目有多少?请注意,这些项目可能包含多个词。

显然,如果我只有一个,那么我可以使用 I have a (.+),如果正好有两个,I have a (.+) and a (. +) 有效。

但如果我想匹配的不仅仅是一个示例,事情就会变得更加复杂。如果我想从前两个示例中提取列表项,我认为这会起作用: I have a (.*)(?: and a (.*))? 虽然这有效第一个短语告诉我我有一只null,第二个短语告诉我我有一只猫和一只狗并且。当我尝试匹配更多形式的短语时,事情只会变得更糟。

有什么方法可以使用正则表达式来达到这个目的吗?这看起来很简单,我不明白为什么我的匹配 2 项列表的正则表达式有效,但匹配 1 项或 2 项列表的正则表达式却不起作用。

最佳答案

您可以使用非捕获组作为条件分隔符(逗号或行尾):
' a (.*?)(?:,|$)'

Python 示例:

import re
line = 'I have a cat, a dog, a guinea pig, and a snake'
mat = re.findall(r' a (.*?)(?:,|$)', line)
print mat # ['cat', 'dog', 'guinea pig', 'snake']

关于java - 以简单英语列出的项目的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25086492/

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