2017-05-17 17 views
1

私はほとんど完全正規表現ですが、一致できない場合があります。オプションの正規表現のキャプチャPhp

私はキャプチャする必要があります:xxxx単語が存在する場合は、小数点(30)と 'cm'。

私のような表現があります。

30x30cm

30×30センチ

30×30センチ

XXXX 30x30cm

XXXX(30x30cm)を - >その場合は、一致していません単語xxxx(存在する場合はキャプチャする必要があります)

XXXX(30×30センチ) - (私はキャプチャする必要が存在する場合)>その場合は、ワードxxxxは一致していない頃は、私の正規表現ザッツ

(?:(\w+))?\s?\b(\d+)\s?x\s?(\d+)\s?(cm)\b 

私はワードXXXXと一致させることができますどのようにもし存在すれば?すべてのヘルプは

をいただければ幸いです[https://regex101.com/r/morihH/1][1]

答えて

1

あなたが最初の任意の非キャプチャグループにオプションの空白と(を追加する可能性があります。

(?:(\w+)\s*\(?)?\b(\d+)\s?x\s?(\d+)\s?(cm)\b 
     ^^^^^^ 

regex demo\sは、以来、スペースで置き換えを参照してください。入力文字列は複数行の文字列です)。

\s*\(?は0個の空白に一致し、オプションの(が続きます。

+1

ありがとうWiktor。魅力のように動作します。よろしくお願いします。 – Albeis

+0

30.13 x 30,12 cmに合わせたいですか?小数点以下の尺度は? – Albeis

+1

@Albeis:あなたは*値を抽出しているので、 '\ d +'を '\ d [\ d。、] *'(0桁の数字、ドットまたはコンマで区切った数字)に置き換えます。 [このregexのデモの更新](https://regex101.com/r/OFZEXm/2)を参照してください。 –