条件正则表达式解析

时间:2016-09-21 17:58:57

标签: regex parsing nsregularexpression

我有很多我试图解析的产品代码(示例99 ITEM SEC SALE)。在极少数情况下,产品代码类似于99 ITEM SEC SALE。

如果电池是" 99 ITEM SEC SALE"然后" ITEM SEC"将被解析(取出99和SALE)。 如果电池是" 99 ITEM SEC" (否 - >销售,出售或购买)。我希望ITEM SEC也会被解析。换句话说,"销售和购买"是禁止的词。

1 - 始终以一组数字开头(无限制) 2字母字符(任意) 3字母字符(任何) - 可选 4 - 如果结束值(字符串)不是" SALE"或者"出售"或者" PURCHASED"然后取出数字并解析

我发现了类似的东西,但无法弄清楚它应该如何适用于我的情况。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好的,所以你的工作是这样的。

(?P<number>\d+)\s+(?P<Item_Name>\w+)\s+(?P<code>[a-zA-Z]{0,3})\s+(?P<status>SOLD|SALE|PURCHASED)?

(?P<number>\d+) -- Named Capture Group 1 (number)- Match any number
\s+ -- Match any number of spaces
(?P<Item_Name>\w+) -- Named Capture Group 2 (Item_Name) - Match any word until space
\s+ match any number of spaces
(?P<code>[a-zA-Z]{0,3}) -- Named Capture Group 3 (code) - Match any a-zA-Z character 0-3 times
\s+ match any number of spaces
(?P<status>SOLD|SALE|PURCHASED)? -- Named Capture Group 4 (status) - Match SOLD / SALE / PURCHASED (? means 0 or 1 times so this is optional)

实例:https://regex101.com/r/oR3sK8/1

我不记得命名捕获组是否像Objective-C那样工作,如果它们不能,你可以删除?P&lt; ...&gt;并且正则表达式仍然应该没有问题(并保持你的捕获组基本不变)。