Splunk Search

Regex optional groups

f1dot4
Explorer

Hi guys,
i'm trying to get this (simplified) regex running (for several days now):

^(?P<message>.+)(?:\s*SIP/2.0\s+(?P<sipaction>.+))?

i also tried another flavour of this statement:

^(?P<message>.+)(?:\s*SIP/2.0\s+(?P<sipaction>.+)|\w*) 

With "Extract Fields" i tested this regex on splunkweb and it works, also when i click on "View in Search" it seems to be ok.

My problem is, that the field "sipaction" is not filled out with content and everything is written to "message" for new incoming indexed data. I tried to implement this regex for a new sourcetype via system/local/transforms.conf & props.conf and also via the Webinterface with the Field-Extractor tool.

I can break the problem down to the optional part of the statement:

^(?P<message>.+)[\s]*SIP/2.0\s+(?P<sipaction>.+)

In this case, "message" and "sipaction" is filled out, but i need the optional part (for a more complex regex).

There is also nothing special in var/log/splunk/.log*

My splunk version is 6.2.2-255606 on rhel 2.6.32-358.el6.x86_64, with splunk version 6.1.4, the optional-regex didn't work at all, and so i upgraded to 6.2.2 .

Some (simplified) data-examples from my log:

2015-03-10T18:20:08.647+01:00; INFO ; Sent final response to client: 
  SIP/2.0 480 Business Logic not available

2015-03-10T18:20:08.647+01:00; INFO ; Test

Thanks in advance!

0 Karma
1 Solution

richgalloway
SplunkTrust
SplunkTrust

Your regex worked just fine on your sample data in regex101 with just a few minor changes.

 (?P<message>.+)(?:\s*SIP\/2\.0\s+(?P<sipaction>.+))?
---
If this reply helps you, Karma would be appreciated.

View solution in original post

rsennett_splunk
Splunk Employee
Splunk Employee

it's a bit unclear as to exactly what you would like to extract. however... you are probably experiencing the result of having an unescaped delimeter. you have to escape the forward slash... check out your regex using regex101.com it's a great tool, and it will give you feedback so you can correct your stuff.

With Splunk... the answer is always "YES!". It just might require more regex than you're prepared for!
0 Karma

richgalloway
SplunkTrust
SplunkTrust

Your regex worked just fine on your sample data in regex101 with just a few minor changes.

 (?P<message>.+)(?:\s*SIP\/2\.0\s+(?P<sipaction>.+))?
---
If this reply helps you, Karma would be appreciated.

f1dot4
Explorer

Thank you very much, i found a way to get my regex running, finally!

Only for documentation:
There seems to be a inconsistency between the "Extract Fields" regex checker on splunkweb and the regex-interpreter for incoming data. A short example:

(?:(?!User-Agent).)*(?:User-Agent:\s+(?P<useragent>[^\s]*))?

In this case

  • regex101 returns the useragent
  • the splunk regex checker on the "Extract Fields" page does NOT returns anything (?!)
  • when i implement this regex for a sourcetype, i get values for useragent-field at searchtime I always used the splunk regex-checker, regex101 seems to be a more reliable source! (splunk regex checker also works with my non-escaped character statement from above, while regex101 isn't)

Anyway, thanks for your help.

Example data:

2015-03-11T10:15:46.077+01:00; INFO ; HOSTNAME/P2928; 24; [RequestProcessor/ProcessBusinessLogicResponse]; Sent final response to client: SIP/2.0 480 Business Logic not available Via: SIP/2.0/UDP 0.0.0.0:0000;branch=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;rport=0000;received=0.0.0.0 To: ;tag=XXXXXXXX From: "" ;tag=XXXXXXXX Call-ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx CSeq: 2001 INVITE User-Agent: APP Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER, REGISTER, SUBSCRIBE, UPDATE, MESSAGE Require: timer
Get Updates on the Splunk Community!

Introducing Splunk Enterprise 9.2

WATCH HERE! Watch this Tech Talk to learn about the latest features and enhancements shipped in the new Splunk ...

Adoption of RUM and APM at Splunk

    Unleash the power of Splunk Observability   Watch Now In this can't miss Tech Talk! The Splunk Growth ...

Routing logs with Splunk OTel Collector for Kubernetes

The Splunk Distribution of the OpenTelemetry (OTel) Collector is a product that provides a way to ingest ...