我想从一个句子中提取例如2个实体。例如:
str1 ='我是汤姆,我有车'
我想提取“汤姆”这个词。或者' jack'作为名称,如果存在。
我也想提取“汽车”这个词。或者' bike'作为财产,如果存在
现在我可以简单地写两个正则表达式:
test$var4
但我想知道我是否可以将这两者结合起来。
问题是我无法知道名称和属性的顺序。所以下面的代码
re.search(r"(?P<name>tom|jack)", s).group('name')
re.search(r"(?P<property>car|bike)", s).group('property')
不起作用:
&#39; str2 =我有一辆车,我是汤姆
我试图简单地结合两个订单情况
re.search(r"(?P<name>tom|jim).*(?P<property>car|bike)", s)
它让我&#34;重新定义组名&#34;错误,除非我改为
re.search(r"(((?P<name>tom|jack).*(?P<property>car|bike))|((?P<property>car|bike).*(?P<name>tom|jack)))", s2)
如何编写常规快递以提取tom / jack作为名称和汽车/自行车作为财产而不考虑订单?
我不想简单列出所有可能的订单,因为如果我想提取n种实体,可能会有太多情况。
答案 0 :(得分:0)
是的,它是可能的,但在外观内,否则会消耗掉字符,引擎指针也不会再回头看新的了。
\A(?=.*(?P<name>tom|jack))(?=.*(?P<property>car|bike))
正则表达式中的每个模式都应该匹配才能成功匹配。如果它们不是强制性模式,则将它们作为可选项。