【发布时间】:2020-04-27 03:22:58
【问题描述】:
在正则表达式方面需要一些帮助。
str = 'label1 a1,832,b2 and label2 2, c45'
尝试将结果返回为
['label a1',label 832','label b2','label 2', 'label c45']
目前只能得到['label2 a1','label2 2']
谢谢!
编辑:
澄清一下。
我有一个标签列表
labelList = ['dog','cat','mouse',...]
str = 'There are 3 locations which are dog 122, h25 and cat a3.'
结果应该是:
result = 'dog 122', 'dog h25' and 'cat a3'.
目前我正在进行正则表达式搜索:
for x in labelList:
re.search(r'\b(%s) ([^ \r\n]+\b')
希望这能澄清问题!
编辑2:
labelList = ['dog','cat','mouse',...]
str = 'There are 3 locations which are dog 122, h25 and cat a3.'
for x in labelList:
if re.search(r'\b(%s)\b' % (x), str):
nr = [f"(%s) {m}" % (x) for m in re.findall(r"(?:(%s))?(\w+)", comText) if m!= 'and']
print(nr)
但是,输出似乎是错误的。它给了我以下输出
["(dog) (' ','there')", "(dog) (' ','are')", "(dog) (' ', '3')" ...
【问题讨论】:
-
到目前为止只能得到...,你试图让你走到这一步的代码在哪里?
-
如果您包含正则表达式,我们可以为您提供提示。
-
a1、832、2和c45有一个共同的特点,即它们都紧跟在逗号之后或位于行尾。我们可以匹配\w+(?=,|$)。b2呢?告诉我们您也希望提取该字符串的 rule 是什么?您需要先用文字告诉我们匹配规则,然后举例说明。用一个例子陈述的问题很少是明确的,这也不例外。 -
是给定的
"label",还是字符串可以是'cat1 a1,832,b2 and cat2 2, c45',在这种情况下,您希望返回['cat a1', 'cat 832','cat b2', 'cat 2', 'cat c45']?