REGEX除字符串外的所有字符

时间:2013-11-12 08:37:13

标签: regex parsing

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

数据结构是:

  1. 包含任何内容的商品代码
  2. 一些可选标志AA BB CC DD
  3. 和数量
  4. 我正在使用这个正则表达式:

    .*\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>
    ....
    

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

2 个答案:

答案 0 :(得分:1)

试试这个(根据您使用的语言,您可能需要稍微修改一下)

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

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

http://gskinner.com/RegExr/?375ce

处试试

答案 1 :(得分:1)

以下正则表达式适用于问题

上发布的示例
^(.+?) ((?:AA|BB|CC|DD|EE|[, ]+){0,6})(\d+)$