2017-11-24 5 views
0

はここ正規表現スキップライン

Regex101

は私がナンバー、カテゴリー後にテキストと一致したい私のサンプルテキストと正規表現だ、「サーバー「は、このサーバーの特定の役割や機能は?:何ですか」ホスト名: "などですが、使用するテキストが変更された場合、私が現在使っている方法はうまくいきません。私は、次のマッチに到達するためにできるだけ多くの行/文字をスキップできるように、これを動的にしたいと思います。

私は現在、次の正規表現使用しています:私は知っている

Number\:\s(?<Number>\d+)[\r\n]Category\:\s(?<Category>.*).*[\r\n].*[\r\n].*[\r\n]What\sis\sthe\sspecific\srole\sor\sfunction\sof\sthis\sserver\?\:\s(?<Function>.*).*[\r\n].*[\r\n].*[\r\n].*[\r\n].*[\r\n].*[\r\n].*[\r\n].*[\r\n].*[\r\n].*[\r\n]Server\sHostname\:\s(?<Hostname>.*).*[\r\n]Server\sAllegiance\:\s(?<Domain>.*).*[\r\n].*[\r\n]Physical\sLocation\:\s(?<Location>.*).*[\r\n].*[\r\n].*[\r\n].*[\r\n].*[\r\n]Local\sAdministrators\:\s+([\w\s]+)[\r\n].*[\r\n].*[\r\n]Task\sDescription\:\s(?<Task>.*) 

を、私は知っている、それは醜いです!など

+0

プログラミング言語? 'PHP'? 'Python'?他のテキストサンプルもありますか?現時点では、あなたのパターンは[** a catastrophic backtracking **](https://regex101.com/r/S2OqoV/1)になります。 – Jan

+0

あなたの正規表現は壊滅的なバックトラックで逃げ出します。 '|'演算子を使って、キャプチャされた名前のついたそれぞれのグループを分けることができます。 –

+0

S/OからR101へのコピーは、何とかテキストを混乱させました。 – sogeniusio

答えて

1
[\r\n]Number\:\s(?<Number>\d+)|.*[\r\n]Category\:\s(?<Category>.*)[\r\n]|[\r\n]What.*specific.*\:\s(?<Function>.*) 

...