2017-06-22 5 views
0

I持つ二つの例 抽出群

abc 34 def12 ghi 
abc 34 33 ghi 

と正規表現

^.*?([0-9]{2}) ?([a-z]{2,3})? ?([0-9]{2}).*$ 

Iを抽出するような方法でそれを変更する必要が

https://regex101.com/r/U2JNaS/1参照) $1,$2,$3しかし$2が存在する場合にのみ、つまり返却する必要があります

34 def12 
<WRONG> 

どのように達成するには?

+0

@anubhava申し訳ありませんが、私はそれを明確にしませんでした。代用関数はすべて一致しない場合は2番目の例が一致しない(編集された)ことを意味します。 – Tim

+1

次に、2番目を非オプションとして['^。*?([0-9] {2})\ s *([az] {2,3})\ s *([0-9] {2} )。* $ '](https://regex101.com/r/U2JNaS/2) – anubhava

答えて

0

2番目のキャプチャグループ(([a-z]{2,3}))の後に?を配置することに注意してください。

特定の行に「文字」部分が含まれていなくても、正規表現全体が一致することになります。

この場合は?を削除してください。この場合、正規表現全体が一致しません。