2013-04-09 5 views
0

Я хочу, чтобы собрать все данные до заданного текста или который заканчивается с ним, я попытался следующий:Я хочу собрать все символы и события, которые заканчиваются определенным текстом?

.{30}Value_*|.{55}Value2_* 

Но вы должны указать, сколько символов вы хотите собрать до указанного заканчивающегося текста, я хочу просто собрать все из них (Обратите внимание, что Im дело с Python/Perl регулярные выражения здесь)

ответ

1

Попробуйте что-то вроде:

"(.+?)Value_*|(.+?)Value2_*" 

не зная точно, что ваши данные выглядит как я не могу получить более конкретный характер. Чтобы разбить его: .+ соответствует одному или нескольким символам, а ? делает его неживым, поэтому он не потребляет всю строку сразу, и, наконец, скобки фиксируют совпадение (по крайней мере, на Python).

+0

Mate, вы ЛЕГЕНДА! –

+1

Почему бы не сделать опцию '2', а затем перевернуть чередование? –

1

Я что-то упустил? Я не ясно, что точка задних _* (ноль или более символов подчеркивания) есть, но не

^(.*)Value 

делать то, что вам нужно?

+0

Привет @Borodin, да, это будет, trailing _ *, на лицевой знак Splunk, который вы можете включить как часть вашего поискового запроса, я смешивал его с регулярным выражением, думая, что это сработает, поэтому я запутался, но он видит, что твоя работа прекрасно, но как она отличается от (. +) ?? Спасибо –

+0

@IAML: Тогда вы хотите '^ (. *) Value2? _'. Нет необходимости сопоставлять конечные символы. '. +' требует «одного или нескольких», а '. *' требует «ноль или больше», поэтому в этом случае два в основном эквивалентны. Вы можете опустить якорь '^', потому что поиск будет начинаться с начала строки по умолчанию, а '.' будет соответствовать чему угодно, но он описывает цель шаблона лучше с его присутствием. – Borodin