2

このファイルからホストを分離しようとしていますが、私の正規表現は両方のホストを一緒に選択します:

timestamps|||scan_start|Tue May  1 23:00:29 2012|timestamps||foo.com|host_start|Tue May  1     23:16:51 2012|results|-0017\ntimestamps||foo.com|host_end|Tue May  1 23:19:17     2012|timestamps||bar.com|host_start|Tue May  1 23:24:31 2012|results|general/tcp|Sendmail 8.13.8\n\n\ntimestamps||bar.com|host_end|Tue May  1 23:29:11 2012|timestamps|||scan_end|Wed May  2 00:19:40 2012|

正規表現:

timestamps\|\|[\w,\.]*\|host_start.*host_end
4

1 に答える 1

3

スターをレイジーにします:

timestamps\|\|[\w,.]*\|host_start.*?host_end

.*可能な限り一致する「貪欲」です。.*?「怠惰」であり、一致を達成するために可能な限り一致しません。したがってhost_end、最後のものまでではなく、最も近いものまでのみ一致します。

また、文字クラス内のドットをエスケープする必要はありません。そして、本当に文字クラスでコンマを許可したいですか、それとも の意味[\w.]*ですか?

于 2012-05-24T20:33:29.497 に答える