我有一个类似下面的文件-
我想打印每个公共子串的第一次和最后一次出现,这样-\imm_pt_z4a[0], \imm_pt_z4a[1]
就变成了\imm_pt_z4[0:1]
mod pez(ck2_imm_z4a, ck2_lt_func_z4a, ck2_or0_z4a, ck2_opr1_z4a,
ck2_oprk_z4a, ck2_oprl_z4a, ck2_oprm_z4a, ck2_wtn_z404a,
ck2_wtx_z404a, \imm_pt_z4a[0] , \imm_pt_z4a[1] , ldimm_z42b_b,
lt_anden_z4a, \lt_imm_z4a_b[0] , \lt_imm_z4a_b[1] ,
\lt_imm_z4a_b[2] , \lt_imm_z4a_b[3] , \lt_imm_z4a_b[4] ,
\lt_imm_z4a_b[5] , \lt_imm_z4a_b[6] , \lt_imm_z4a_b[7] ,
\lt_imm_z4a_b[8] , \lt_imm_z4a_b[9] , \lt_imm_z4a_b[10] ,
\or0_z42b_b[0] , \or0_z42b_b[1] , \or0_z42b_b[2] ,
\or0_z42b_b[3] , \or0_z42b_b[4] , \or0_z42b_b[5] ,
\or0_z42b_b[6] , \or0_z42b_b[7] , \or0_z42b_b[8] ,
我在试这个正则表达式
(\b[^\\;]+)\\([^[]+)\[(\d+)\][^;]+\2\[(\d+)\]
用这个来代替
\1\2[\3:\4]
https://regex101.com/r/vT3xC1/2
第一组总是被正确地找到,但是下一组字符串我总是错过第一组,所以输出是正确的
mod pecl (ck2_imm_z4a, ck2_lt_func_z4a, ck2_or0_z4a, ck2_opr1_z4a,
ck2_oprk_z4a, ck2_oprl_z4a, ck2_oprm_z4a, ck2_wtn_z404a,
ck2_wtx_z404a, ldimm_z42b_b,
lt_anden_z4a, lt_imm_z4a_b[0:31] ,
\lt_result_z4a[0] , lt_result_z4a[1:63] ,\lt_tbl_z4a[0] , lt_tbl_z4a[1:10] ,
应该是的
mod pecl (ck2_imm_z4a, ck2_lt_func_z4a, ck2_or0_z4a, ck2_opr1_z4a,
ck2_oprk_z4a, ck2_oprl_z4a, ck2_oprm_z4a, ck2_wtn_z404a,
ck2_wtx_z404a, ldimm_z42b_b,
lt_anden_z4a, lt_imm_z4a_b[0:31] ,
\lt_result_z4a[0:63] ,\lt_tbl_z4a[0:10] ,
注意我得到的最后一行是->
\lt\u result\u z4a[0],lt\u result\u z4a[1:63],\lt\u tbl\u z4a[0],lt\u tbl\u z4a[1:10],
我应该得到的是
\lt\u结果\u z4a[0:63],\lt\u tbl \u z4a[0:10],
非常感谢你能帮我解决这个问题。你知道吗
替换
与
当然,
\w
是我这边的一个假设,但它符合你的样本。你知道吗第3组将包含最后一个数字,即使在这两个组之间匹配多次。你知道吗
相关问题 更多 >
编程相关推荐