2017-07-20 2 views
1

Ich habe eine Datei, die diese enthält:Regex, wählen Nth Match

<Row> 
<Cell><Data ss:Type="String">INC000012486615</Data></Cell> 
<Cell><Data ss:Type="String">abcd-efg-hij4-en:ddcs</Data></Cell> 
<Cell><Data ss:Type="String">fs-hubraum-apps:kayw-de</Data></Cell> 
<Cell><Data ss:Type="String">mn-def-seb01:sfyc-en</Data></Cell> 
<Cell><Data ss:Type="String">00055s4dEN</Data></Cell> 
<Cell><Data ss:Type="String"></Data></Cell> 
<Cell><Data ss:Type="String">General Information</Data></Cell> 
<Cell ss:StyleID="ce2"><Data ss:Type="DateTime">2017-06-28T16:24:35</Data> 
</Cell><Cell><Data ss:Type="String">Public</Data></Cell> 
<Cell><Data ss:Type="String">Hi John, 
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
Thanks, 
Snow</Data></Cell> 
</Row> 

Ich schrieb einen Regex, die die wertvollen Informationen wählt: (?<=<Data[^>]*>)((.|\n)*?)(?=<\/Data>): wählt nur die inneren Daten innerhalb <Cell><Data>. Sie können link

auf dieser teste ich die n-te Spiel in der Lage sein möchten, wählen Sie Regex mit: (1. Spiel: INC000012486615, zweite Spiel abcd-efg-hij4-en:ddcs, etc.)

ich nicht erfolgreich war meine Regex ändern. Irgendwelche Vorschläge ?

PS: Ich muss Regex verwenden. Für Splunk Field Extraktion. Versuchen

+1

[** nicht regex verwenden XML zu analysieren **] (https://stackoverflow.com/a/1732454/ 1954610). Verwenden Sie einen Parser. –

+0

Hallo. Ich muss Regex innerhalb Splunk Feld Extraktor verwenden. Auch die Datei ist nicht gut strukturiert XML. Also kann ich keinen XML-Parser verwenden. – belas

+0

Was meinen Sie mit "nicht gut strukturiert"? Das von Ihnen bereitgestellte Beispiel scheint in Ordnung zu sein. Ich bin nicht vertraut mit "Splunk", aber eine schnelle Google sagt mir, Sie können 'Spath' verwenden, um die XML zu analysieren? http://docs.splunk.com/Documentation/Splunk/6.0/SearchReference/Spath –

Antwort

2

wenn dieses Muster den 3. Datenwert zurückgibt:

<Row>(?:\s*(?:<\/Data>\s*<\/Cell>\s*)?<Cell[^<>]*>\s*<Data\b[^<>]+>\K([^<>]*)){3} 

Die \ K verwendet wird, dass das Muster, um sicherzustellen, bevor er nicht Teil der angepassten Zeichen ist.

0

Dies ist der falsche Ansatz. Anstatt eine schlampige regulären Ausdruck zu schreiben, alle Werte zu erfassen, wäre es besser, kv_mode in Ihrem props.conf

Wenn Ihr in einer Cluster-envrionment zu aktivieren, gehen Sie zu Ihrem Cluster-Master und bearbeiten props.conf zu KV_MODE = xml

In einer Umgebung ohne Cluster, gehen Sie zu Ihrem Indexer (n) und fügen Sie das Attribut KV_MODE