ฉันต้องการแยกสตริงย่อยของฟิลด์ msg ระหว่าง 2 สตริง
ตัวอย่างของบันทึก: ทดสอบการบันทึกในเครื่อง: db=testdb,message
สิ่งที่ฉันต้องการคือ "testdb" ดังนั้นสตริงระหว่าง "db=" และ ","
นี่คือการกำหนดค่าของฉัน:
แม่แบบ (ชื่อ = "jsonTemplate"
ประเภท = "รายการ"
option.json="เปิด") {
ค่าคงที่ (ค่า = "{")
ค่าคงที่ (value="\"timestamp\":\"") คุณสมบัติ (ชื่อ="timereported" dateFormat="rfc3339")
ค่าคงที่ (ค่า="\",\"ข้อความ\":\"") คุณสมบัติ (ชื่อ="msg")
ค่าคงที่ (ค่า = "\",\"โฮสต์\":\"") คุณสมบัติ (ชื่อ = "ชื่อโฮสต์")
ค่าคงที่ (value="\",\"severity\":\"") คุณสมบัติ (ชื่อ="syslogseverity-text")
ค่าคงที่ (value="\",\"facility\":\"") คุณสมบัติ (ชื่อ="syslogfacility-text")
ค่าคงที่ (ค่า="\",\"syslogtag\":\"") คุณสมบัติ (ชื่อ="syslogtag")
ค่าคงที่ (ค่า="\",\"ฐานข้อมูล\":\"") คุณสมบัติ (ชื่อ="msg" regex.expression="(db=)(.*)(,)" regex.match="0" regex .type="ERE")
ค่าคงที่ (ค่า = "\"}")
}
อย่างไรก็ตาม ผลลัพธ์ที่ฉันได้รับคือ: "db=testdb," แต่ฉันไม่ต้องการให้ "db=" และ "," ปรากฏขึ้น
ฉันได้ทดสอบ regex หลายรายการแล้ว แต่ไม่ได้ผล:
(?<=db=)(.*)(?=,) --> ใช้งานได้ใน https://regex101.com
ฉันไม่เข้าใจว่าทำไม regex ไม่ทำงาน
เวอร์ชัน: rsyslogd: เวอร์ชัน 8.24.0