如何使用正则表达式查找一个属性匹配多个匹配项?

时间:2014-06-28 00:34:31

标签: regex

我有一个表格,其条目的属性名称如“3000”。某些条目的每个属性都有一个数字,但某些条目对于某些属性有多个数字。例如,对于名为3000的属性,一个条目可以具有值“ABC”和“DEF”。

我想找到与名为3000的属性相关联的任何值,并且有三个值... ABC,DEF和GHI。当我提取所有属性信息时,我可以看到名为0-001的条目的多个值:

... ^3000:ABC, ^3000:DEF, ^3000:GHI ...

我正在使用以下表达式,但它只返回第一个条目,但不返回其余条目。

(attribute_list, "\\^3000:([^\\^]*),")" from myTable where entry_id="0-0001"

它只返回值“ABC”,但我希望它返回“ABC”,“DEF”和“GHI”。我需要做些什么来实现这个目标?

2 个答案:

答案 0 :(得分:1)

这将获得您的所有属性:

(?<=\^3000:)[^,\s]+

请参阅demo

输出:ABCDEFGHI

如果您还想返回^3000,请使用此正则表达式:

\^3000:[^,\s]+

<强>解释

  • lookbehind (?<=\^3000:)声称前面的内容是^3000:
  • 否定字符类[^,\s]+匹配一个或多个既不是逗号也不是空白字符的字符

请参阅demo


<强>参考

答案 1 :(得分:1)

您的正则表达式与数据中的3rd值不匹配,因为后面没有逗号,只有空格字符。我会在这里用逗号或空格字符来否定。

\\^3000:([^, ]+)

这将找到所有匹配但如果它不适合您,那么您需要在SQL调用中进行全局搜索。