如何用正则表达式提取子字符串?

时间:2014-03-10 20:15:22

标签: regex go

我想提取“缓存”之后的数字(可能是任何非负整数),但不是“total_cache”之后的数字。我需要能够在一个正则表达式中执行此操作,并且我不能使用前瞻或后瞻。 (我在go中这样做,看起来在很大程度上与测试人员兼容:http://regexpal.com/


cache 5764452352
rss 2929250304
rss_huge 0
mapped_file 283906048
pgpgin 19709097
pgpgout 17586611
pgfault 39612525
pgmajfault 3757
inactive_anon 160579584
active_anon 3931484160
inactive_file 3560427520
active_file 1040818176
unevictable 49152
hierarchical_memory_limit 9223372036854775807
total_cache 5764452352
total_rss 2929250304
total_rss_huge 0
total_mapped_file 283906048
total_pgpgin 19709097
total_pgpgout 17586611
total_pgfault 39612525
total_pgmajfault 3757
total_inactive_anon 160579584
total_active_anon 3931484160
total_inactive_file 3560427520
total_active_file 1040818176
total_unevictable 49152

3 个答案:

答案 0 :(得分:5)

您需要使用FindStringSubmatch,然后提取m [1]。

http://play.golang.org/p/zOixuvDWsi

答案 1 :(得分:2)

这应该这样做:

^cache\s(\d+)

工作正则表达式示例:

http://regex101.com/r/jS6sF6

在Go编程语言中,我认为您可以使用以下方法强制执行多行模式:(?m) 像这样:

(?m)^cache\s(\d+)

注意:我不熟悉Go语法,所以请原谅我这是错的,但正则表达式是正确的,它只需要与多行标志一起使用。

答案 2 :(得分:1)

试试这个 -

^cache[ ](\d+)$
带有多行(m)标志的

(在Regex Tester中勾选选项 - 换行时^ $匹配)