2012-05-03 5 views
0

Я пытаюсь написать запрос splunk, который в основном извлекает поля между разделителем «,» и помещает значение в переменную.wildcard dot-star игнорировать делиметр

Я хочу извлечь все между двумя запятыми.

,extract [email protected]#$, 
,extract [email protected]#$, etc 

Теперь есть не вариант, чтобы не давать какие-либо регулярное выражение, и просто получить все между , ,.

Так близко, я могу думать, ,.*, .. однако .* будет жадным и соответствовать всем остальным.

Есть ли регулярное выражение, которое можно использовать, чтобы остановить сопоставление подстановочных знаков после того, как встречается ,?

Я попытался

.*$, 
.*, 

, который не работал.

+0

Попробуйте '. * ?,'. В большинстве ароматизаторов регулярных выражений a? после * делает его неживым. У меня нет опыта splunk, поэтому я не могу подтвердить, что это касается вашего примера. –

ответ

1

Не уверен, что Splunk, но в большинстве языков вы можете попробовать

/\,([^,]*)\,/ 

- соответствуют все символы, которые не запятая. извлечение будет в \ 1. Не уверен, что вам понадобятся экраны перед запятыми.

1

Используйте следующие регулярные выражения в вашем Splunk поисковый запрос, он извлечет обязательно подается как «FIELDNAME»

| rex "(?i)\,(?P<FIELDNAME>[^ ][a-z0-9#[email protected]$ ]+)\,\s" 

Учитывая после «» (после того, как поле) есть место, следовательно, я добавил „\ s“, без «\ s» он также будет работать.