长字符串中的FindAllStringSubmatch

时间:2018-04-30 02:56:34

标签: regex go

我有很长的搜索字符串(剪切):

s := `<option value='1'>Name A</option><option value='2'>Name B</option><option value='3'>Name C</option><option value='4'>Name D</option><option value='5'>Name E</option><option value='6'>Name F</option><option value='7'>Name G</option>`

我想搜索值和名称:

re := regexp.MustCompile(`ue='([0-9]+)'\>(.+)\</o`)
arr := re.FindAllStringSubmatch(s, -1)

该函数不返回我需要的值,而是返回

[[ue='1'>Name A</option><option value='2'>Name B</option><option value='3'>Name C</option><option value='4'>Name D</option><option value='5'>Name E</option><option value='6'>Name F</option><option value='7'>Name G</o 1 Name A</option><option value='2'>Name B</option><option value='3'>Name C</option><option value='4'>Name D</option><option value='5'>Name E</option><option value='6'>Name F</option><option value='7'>Name G]]

请帮助,以便更像

[[ue='1'>Name A</o 1 Name A][ue='2'>Name B</o 2 Name B][... etc

我检查了罪魁祸首(。+),但它总是无法返回预期的一个,它扩展到字符串的末尾。

1 个答案:

答案 0 :(得分:-1)

question不同,但答案适合我的问题。

我将(.+)替换为([^\<]+),以便最后一行

 re := regexp.MustCompile(`ue='([0-9]+)'\>([^\<]+)\<`)