2

私は基本的にIP検出器の正規表現とは何かに取り組んでいます。

基本的に、ピリオドが含まれていないすべての数値を削除したいと思います。

たとえば、次のサンプル入力があります。

1          >Matches
12         >Matches
134        >Matches
156        >Matches
1567       >Matches
1.99       >No Match
.100       >Don't care
1.2.3.4    >No Match
.1.2.3.4   >No Match

これは、すべての一致を削除するために使用されます。一致はスペースで区切られます。たとえば、文字列を入力した場合:

"14. 24. asf.d 7 .12 .498 .s g 14091 87.49 .sdf.gs.df 12874 ds.fgs 9.127.41 sd.fg 92.47 sd.fg 892.14 sd.fg .79 12 s.df 47 8 .sdfg 1.9 sdfg 2.4 71. s9 24 .ds.f.g 71.9 8 s.df 4 .g 7 132. .sdfg 4 s.dfg"

文字列に似たものが返される場合があります。

"asf.d .s g 87.49 .sdf.gs.df ds.fgs 9.127.41 sd.fg 92.47 sd.fg 892.14 sd.fg s.df .sdfg 1.9 sdfg 2.4 s .ds.f.g 71.9 s.df .g  .sdfg s.dfg"

私は次のようになりました:

([0-9]+)(?=)

ただし、ピリオドが含まれている場合、正規表現で数値を無視する方法がわかりません(実際、ピリオドが含まれている場合でも、最初に数値を選択する方法がわかりません!)

4

1 に答える 1

3

この正規表現を試すことができます:

"(?<![0-9.])[0-9]+(?![0-9.])"

説明:

  • (?<![0-9.]):ネガティブな後ろ姿。前の文字は0-9またはドットではありません。
  • [0-9]+:0〜9の1桁以上。
  • (?![0-9.]):ネガティブな先読み。次の文字は0-9またはドットではありません。
于 2012-07-21T07:41:59.357 に答える