0

我需要正则表达式来解析文本中的项目。

数据结构为:

  1. 包含任何内容的项目代码
  2. 一些可选标志 AA BB CC DD
  3. 和数量

我正在使用这个正则表达式:

.*\n(.+) (AA|BB|CC|DD|EE|[, ]+){0,6}(\d+).*

使用此文本字符串:

Sveiki,

I need these items:

1508-dkh-ą9 AA, BB 100
1efae 468 BB, CC 100
2efae 468 BB 100
3efae 468 100

Ačiū už dėmesį ir skirtą laiką!

它返回

<row>
    <ID>0</ID>
    <Match>1508-dkh-Ä…9 AA, BB 100</Match>
    <Group1>1508-dkh-Ä…9 AA, BB</Group1>
    <Group2></Group2>
    <Group3>100</Group3>
</row>
<row>
    <ID>1</ID>
    <Match>1efae 468 BB, CC 100</Match>
    <Group1>1efae 468 BB, CC</Group1>
    <Group2></Group2>
    <Group3>100</Group3>
</row>
<row>
    <ID>2</ID>
    <Match>2efae 468 BB 100</Match>
    <Group1>2efae 468 BB</Group1>
    <Group2></Group2>
    <Group3>100</Group3>
</row>
<row>
    <ID>3</ID>
    <Match>3efae 468 100</Match>
    <Group1>3efae 468</Group1>
    <Group2></Group2>
    <Group3>100</Group3>
</row>

我需要这样的结果

<row>
    <ID>0</ID>
    <Match>1508-dkh-Ä…9 AA, BB 100</Match>
    <Group1>1508-dkh-Ä…9</Group1>
    <Group2>AA, BB</Group2>
    <Group3>100</Group3>
</row>
....

我怎样才能达到这个结果?(也许有比正则表达式更好的解决方案?)

4

2 回答 2

1

试试这个(您可能需要根据您使用的语言对其进行一些修改)

^(.+?)([AA|BB|CC|DD|EE, ]*) ([0-9]+)$

第一组中的问号会使其变得懒惰,这也将阻止它匹配您的可选标志。

在http://gskinner.com/RegExr/?375ce尝试一下

于 2013-11-12T10:04:28.420 回答
1

以下正则表达式适用于问题上发布的示例

^(.+?) ((?:AA|BB|CC|DD|EE|[, ]+){0,6})(\d+)$
于 2013-11-12T10:12:01.370 回答