ログファイルを読み込み、正規表現を使用してマシン/設定情報を抽出しようとしています。ここでは、ログからのサンプルは次のとおりです。正規表現 - 繰り返しグループ
...
COMPUTER INFO:
Computer Name: TESTCMP02
Windows User Name: testUser99
Time Since Last Reboot: 405 Minutes
Processor: (2 processors) Intel(R) Xeon(R) CPU 5160 @ 3.00GHz
OS Version: 5.1 .number 2600:Service Pack 2
Memory: RAM: 48% used, 3069.6 MB total, 1567.3 MB free
ServerTimeOffSet: -146 Seconds
Use Local Time for Log: True
INITIAL SETTINGS:
Command Line: /SKIPUPDATES
Remote Online: True
INI File: c:\demoapp\system\DEMOAPP.INI
DatabaseName: testdb
SQL Server: 10.254.58.1
SQL UserName: SQLUser
ODBC Source: TestODBC
Dynamic ODBC (not defined): True
...
私は「、第二(すなわち「コンピュータINFO」として、各データの「ブロック」、一つのグループとしてのヘッダを使用して、データをキャプチャするためにコンピュータ名を希望します:....... ")、ブロックごとにこれを繰り返します。式がこれまであった場合は
(?s)(\p{Lu}{1,} \p{Lu}{1,}:\r\n)(.*\r\n\r\n)
このようにして、ブロックをグループに引き出します。これはすばらしいです。しかし、私はそれがキャプチャを繰り返す必要があります、私は得ることができないようです。私はいくつかのグループ化式を、試してみた:正しいように見えるが、私は戻って空のグループの項目値とNULL結果グループの多くを得るでしょう
(?s)(?:(\p{Lu}{1,} \p{Lu}{1,}:\r\n)(.*\r\n\r\n))*
。私は式を適用するために.NET RegExクラスを使用しています。
私はこのアプローチを理解していますが、最初の式が一致するグループを返していないため、理由がわかりません。助言がありますか? – Jason
最初のケースでは、あなたはグループを取得していない、あなたはちょうど一致している。この例にコードを追加します。 –
私は謝る。私はこれをコードで行いました。それは魅力的でした。私はExpressoで例を試していました。これは、Singleline | Multilineオプションでなければなりません。これは、式をどのように動作させるかを理解できるように、より詳細に調べなければなりません。あなたのお時間をありがとうございました。 – Jason