[英]Extract last instance of substring from string
这是我的哈希:
---
0:
id: 11259
year: 1997
status: other
priority:
created_at: !ruby/object:ActiveSupport::TimeWithZone
utc: 2017-01-13 15:02:22.000000000 Z
zone: !ruby/object:ActiveSupport::TimeZone
name: Etc/UTC
time: 2017-01-13 15:02:22.000000000 Z
updated_at: !ruby/object:ActiveSupport::TimeWithZone
utc: 2017-01-13 15:02:22.000000000 Z
zone: !ruby/object:ActiveSupport::TimeZone
name: Etc/UTC
time: 2017-01-13 15:02:22.000000000 Z
1:
id: 82829
year: 1931
status: won
priority:
created_at: !ruby/object:ActiveSupport::TimeWithZone
utc: 2017-01-13 15:02:22.000000000 Z
zone: !ruby/object:ActiveSupport::TimeZone
name: Etc/UTC
time: 2017-01-13 15:02:22.000000000 Z
updated_at: !ruby/object:ActiveSupport::TimeWithZone
utc: 2017-01-13 15:02:22.000000000 Z
zone: !ruby/object:ActiveSupport::TimeZone
name: Etc/UTC
time: 2017-01-13 15:02:22.000000000 Z
我想做两件事之一:
(1)提取两个“ id”
id: 11259
id: 82829
(2)仅提取最终的“ id”:
id: 82829
到目前为止,我只能提取第一个 ID:
REGEXP_SUBSTR(hash_name, "id: .*?\n")
谢谢。
如果您使用的是使用PCRE的MariaDB版本,则可以在匹配之后使用否定前瞻排除id:
。
REGEXP_SUBSTR(hash_name, '(?s)id:[^\n]+(?!.*id:)')
(?s)
将其置于DOTALL
模式,以便.*
跨换行符匹配。 (?!.*id:)
是一个否定的超前行为,如果后面跟着包含id:
任何内容,则不允许匹配。 id:[^\\n]*
与id:
匹配,后跟可选的任何字符,直到换行符为止。
尝试使用此用户定义的函数来访问perl regex:
PREG_CAPTURE(pattern, subject [, capture-group] [, occurence])
编辑:
PREG_CAPTURE("(?s)id:[^\n]+(?!.*id:)", hash_name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.