我只想提取给定行中方括号之间的值。 从文字
TID: [-1] [] [2019-07-29 10:18:41,876] INFO
我想提取方括号之间的第一个匹配点,即 -1 。 我尝试使用
(?<Ten ID>((^(?!(TID: )))*((?<=\[).*?(?=\]))))
但是它给出了
-1, ,2019-07-29 10:18:41,876
作为结果匹配。
如何仅捕获第一次出现的事件?
您可以访问正则表达式编辑器here。
答案 0 :(得分:1)
str = “TID:] [-1] [] [2019-07-29 10:18:41,876] INFO”
i1 = str.index(‘[‘)
#=> 6
i2 = str.index(‘]’, i1+1)
#=> 9
i1.nil? || i2.nil? ? nil : str[i1+1..i2-1]
#=> “-1”
答案 1 :(得分:0)
您可以使用捕获组来捕获第一个事件:
\ATID: \[([^\[\]]+)\]
答案 2 :(得分:0)
您可以使用
\bTID:\s*\[([\d-]+)]
请参见Rubular demo
s="TID: [-1] [] [2019-07-29 10:18:41,876] INFO "
puts s[/\bTID:\s*\[([\d-]+)]/, 1]
# => -1