2016-07-19 25 views
0

こんにちは私は空白を含む表記の束を受け入れるべきではありません。RegExは空白を受け入れていません

以下は式です。

  1. PA#N<number>.<number>#ADP<number>PA#N1.1#ADP1
  2. PA#N<number>.<number>,<number>.<number>#ADP<number>PA#N1.1,1.2#ADP1,2
  3. PA#N<number>#ADP<number>PA#N1#ADP4
  4. PA#N<number>,<number>#ADP<number>PA#N1,2#ADP4
  5. PA#N<number>,<number>.<number>,<number>#ADP<number>例えばPA#N1,2.1,3#ADP1
  6. PA#N<number>,<number>.<number>-<number>#ADP<number>例えばPA#N1.1-3#ADP1
  7. PA#N<number>,<number>.<number>-<number>.<number>#ADP<number>PA#N1.1- 3.2#ADP1,2
  8. PA#NUAL,AZ,AN#FOP<number>
  9. PA#N1.1-2.1,3.1#ADP#PUSH
  10. PA*N1.1*ADP

、それはまたPA#<space>N<space>1<space>1#ADPでスペースを持っている場合は受け入れられない、しかしPA#N1.1...#5#SOME TEXT(フリースペースがあると、フリーテキストでの最後の '#' の後SOME TEXT一部容認できる)。

PA*も受け入れられません。私たちは、その後FREE<SPACE>TEXTの間にスペースを与えれば満足するために、これらすべての上記の条件については

が、私は上記のすべての条件は上記の正規表現と一致している正規表現

PA(?!\*$)(?!([#*].*\s+).*)(?!(\*N(\d+(\.\d+)?,?)+)$)(?!([#*](U.*|T.*|(N\d+\.?\d*)-(\d+\.?\d*)|(N(\d+(\.\d+)?,?)+))){1,3}[#*]ADP).* 

を作成し、唯一欠けているが(PA#N1.1#5#FREE TEXTです我々は上記の正規表現と一致する、その後FREETEXTようFREE TEXTの間にスペースを与えていない場合、それは。

を受け付けていません。

を誰がするのに役立つ可能性があり私の間違いを見つけ、正しい表現は何でしょうか?私はこの2日間に苦労しています。

+0

私は間違っていないです場合は2番目の先読みが実際に正と負ではないはずです。 –

+0

正解を選択 – Ungeheuer

答えて

0

Iソリューションを簡単にするために二つのことを示唆する:

  1. PA#N#ADPとの間の全ての組み合わせが1〜6のエーテル.で区切ら番号、又は,の一連として記述することができると仮定し、又は-で囲み、任意でスペースで囲みます。これは\s*\d+\s*(?:[\.,-]\s*\d+\s*){0,5}で表すことができます。私はこの仮定があなたにとって受け入れ可能かどうかは分かりませんが、そうであれば正規表現を単純化するでしょう。仮定が受け入れられない場合、私は答えの終わりに拡張正規表現へのリンクを提供しました。

  2. には、を除外して、hereの方法で反転するパターンを作成します。簡単に言えば、それは次のようになります。/^((?!INVERTED_PATTERN).)*$/

この場合、式は次のようになります。

^((?!  # This and the final line allow invert the regex condition 

PA(?: 
    \*(?:N\s*\d+\s*\.\s*\d+\s*\*ADP)? # match the asterisk cases 
    | \#\s*N\s*\d+\s*      # or the hash cases 
     (?:[\.,-]\s*\d+\s*){0,5} 
    \#ADP\s*(?:\d|\#PUSH) 
    | \#NUAL,AZ,AN\#FOP\d     # or the 'UAL,AZ,AN' literal 
) 

).)*$ 

注:この正規表現を使用するx修飾子を必要とします。

デモ:最初の仮定が受け入れられない場合https://regex101.com/r/bY4xU6/3

、あなたはここからより多くの精巧な正規表現を使用することができます:https://regex101.com/r/oD8uG7/1

関連する問題