2016-05-12 13 views
3

RegExを手伝ってもらえますか? サイズ、数量などの飲み物のアーティクルタイトルにある不要な情報をすべて削除します。それは525にマッチだ25 Test Drink 60% 12x1,0L/(?<!^)(\d{1,2}\s?x\s?)?\d{1,2}((,|\.)\d{1,2})?\s?L?/igURegExがあまりにも早く一致しています

私はこの正規表現を作りました。

オンTest Drink 60% 12x1,0L%の前に60と一致しています。

これらの例を避けるにはどうすればよいですか?私は12x1,0Lと一致したい。データソースは数量とサイズの形式に非常に矛盾しているので、非常に多くのオプション文字を配置する必要がありました。それは単なるボトル/缶なので、量が不足していることも起こりうる。

I、タイトルの下に、ここでより多くの例を提供した:https://regex101.com/r/aQ2kO8/2

25試験飲料60%12x1,0L
試験飲料60%2x0,5
試験飲料3×0.75 L
を 試験飲料4x0,75 L
試験ドリンク5×0,75L
試験飲料66 X 0,75
テスト0,75
テスト0.75
ドリンクを飲みます 7UP 12 x 1 L

誰かがこの問題を手伝ってもらえますか?

+0

'(?:\ d + \ s * x \ s *)?(?:\ d + [。、])?\ d + \ s * L?\ s * $'私はあなたのすべての要件を正しく持っているかどうかはわかりません。 –

+0

探しているパターンがいつも 'L'で終わるような感じですか? – nu11p01n73R

+0

@SebastianProske提案していただきありがとうございますが、それは私のリンクの最後の例と一致しています。これらの文字はオプションであり、タイトルには出現しないので、 '? 'を追加しました。複数の行に対してテストする場合は、 –

答えて

1

検索パターンとして(?:\d+\s*x\s*)?(?:\d+[.,])?\d+\s*L?\s*$を使用することができます。m-修飾子とg-修飾子を設定する必要があります。あなたがlのチャー場合のために気にしないとx

  • (?:\d+\s*x\s*)?は、必要に応じて
  • (?:\d+[.,])?は任意に続く数字に一致した空間に囲まれるかもしれないx続く数字と一致した場合もI-修飾子が必要となる場合がありますドットまたはカンマで
  • \d+は、一つ以上の数字
  • \s*L?\s*は、必要に応じてスペース
  • 囲まれるかもしれない Lに一致する一致しました
  • $は、行末と一致します。あなたの説明からあなたがマッチさせたいものはいつも最後にあります。これを使うことで、ドリンク名に一致する数字を避けることができます。

regex101 demoを見てください。

関連する問題