2

私は正規表現に苦労しており、ここでいくつかのガイダンスを見つけたいと思っています。すでにここと Google で検索しましたが、適切な用語を見つけるのは難しいです。非キャプチャ グループが役立つと想像できましたが、それらを適用する方法がわかりません。

基本的に、「叫んでいる」Java 1 行コメント(小文字なし)を見つけたいと思います。

^[ \t]*//[^a-z]+?$

今、私は次のようなコメントも見つけます:

// PN-123456 
// ITK 12345
//IT-12345

これらのコメントは私にとって有効なので、上記の正規表現から除外したいと思いました。いつもこんなパターンです。

  1. オプションの空白
  2. 「PN」または「IT」または「ITK」
  3. ハイフン、空白、または何もない
  4. 4桁から6桁
  5. オプションの空白

それがこのパターンに対する私のアプローチです:

[ ]?PN[ -]?[0-9]{1,6}

しかし、今では両方の式を 1 つの RegEx にまとめることができません。これはどのように機能しますか?

ティア、ピーター

4

1 に答える 1

8

否定的な先読みが必要です:

^//(?!\s*(?:PN|ITK?)[ -]?[0-9]{1,6}[ ]*$)[^a-z]+?$

[^a-z]+小文字は必要ありませんが、「大文字のみ」とはまったく同じではないことに注意してください。たとえば、コメント// ----------、さらには空//(スペースがある限り) をキャッチします。

例: http://regexr.com?31app

于 2012-06-21T10:42:30.810 に答える