1

次のような内容のログ ファイルを読み込もうとしています。

127.0.0.1 - - [2009/10/17:00:02:14 0000] GET xxxxxx xxxx xxx

次の正規表現を試しましたが、取得していますERROR: Unclosed group near index 90

正規表現 =(\d+\.\d+\.\d+\.\d+)\s-\s-\s\[(\d+)/(\w{3})/(\d{4}):(\d{2}):(\d{2}):(\d{2})\s(\d{4}\)].*

誰かが私を助けることができますか?

4

5 に答える 5

2

一部の文字をエスケープするのを忘れました:

^(\d+\.\d+\.\d+\.\d+)\s-\s-\s\[(\d+)\/(\w{3})\/(\d{4}):(\d{2}):(\d{2}):(\d{2})\s(\d{4})\]
于 2009-11-18T14:50:10.370 に答える
1

「[」と「]」はエスケープする必要があると思います: [[]and[]]または\[and \].

Java の場合:

java.util.regex.Pattern.compile("(\\d+.\\d+.\\d+.\\d+)\\s-\\s-\\s\\[(\\d+)/(\\w{3})/(\\d{4}):(\\d{2}):(\\d{2}):(\\d{2})\\s(\\d{4})\\].*")
于 2009-11-18T14:49:50.123 に答える
0

まず、バックスラッシュで [ と ] をエスケープします。それらは正規表現で特別な意味を持ちます。

于 2009-11-18T14:50:41.977 に答える
0

[ と ] は特殊文字です。それが、閉じられていないグループの意味です。正規表現のフレーバーに応じて、各ブラケットの前に 1 \ または 2 \ を配置する必要があります。

正規表現 = (\d+.\d+.\d+.\d+)\s-\s-\s[(\d+)/(\w{3})/(\d{4}):(\d{2 }):(\d{2}):(\d{2})\s(\d{4})].*

于 2009-11-18T14:51:19.730 に答える
0
^\d+\.\d+\.\d+\.\d+\s-\s-\s\[\d{2}\/[A-Z]{3}\/\d{4}:\d{2}:\d{2}:\d{2}\s\d{4}]\sGET\s(.{6}\s.{4}\s.{3})$
于 2009-11-18T14:56:13.993 に答える