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 に答える