0

( および ) 内のすべての数値をデータ内で個別に検索してキャプチャしようとしていますが、残りの数値は無視されます。

私のデータは次のようになります

21 [42] (12) 19 25 [44] (25 26 27) 17 (14 3) 8 1 6 (19)

だから私は、、、、、、およびの一致12を見つけたい25262714319

私はやってみましたが、\((\d+)\)*これは私1225、、、1419

どんな助けでも大歓迎です。

4

3 に答える 3

1

肯定的な先読みと否定的な先読みを組み合わせて、目的の結果を得ることができます。

(\d+)(?=(?:.(?!\())*\))

正規表現:

(           group and capture to \1:
 \d+        digits (0-9) (1 or more times)
)           end of \1
(?=         look ahead to see if there is:
 (?:        group, but do not capture (0 or more times)
   .        any character except \n
   (?!      look ahead to see if there is not:
    \(      '('
   )        end of look-ahead
)*          end of grouping
 \)         ')'
)           end of look-ahead

デモを見る

于 2013-09-13T02:36:11.803 に答える
0

ここでこのパターンの\d+(?=(((?!\().)*)\))例を使用してください

次の(\d+)(?=(?:(?!\().)*\)) デモに変更

于 2013-09-13T02:43:15.860 に答える
0

そこに巣は見当たりません。ネストは、次のようなことを意味します。

12 (34 (56) 78) 90

そのようなデータが実際にある場合、特にネストの深さが分からない場合は、正規表現を使用しないことをお勧めします。しかし、あなたの問題は非常に単純に見えます。必要なのはこれだけです。

\d+(?=[^()]*\))

他の回答と同様に、先読みは、こことそこの間に開始ブラケットがなく、前方に終了ブラケットがあることを主張します。主に効率のために、閉じ括弧も除外しました。そうしないと)、最初にズームインする傾向があり、バックトラックする必要があるだけです。

于 2013-09-14T01:21:25.587 に答える