我是正则表达式的初学者,我正在尝试实现一些相对简单的事情:
我有一个这样排列的数据集:
1,AAA,aaaa,BBB,bbbbbb ...
2,AAA,aaaaaaa,BBB,bbb ...
3,AAA,aaaaa,BBB,bb ...
我正在考虑为 AAA 或 BBB 之后的各种长度(字母数字字符)的字符串添加大括号(这些是恒定的):
1,AAA,{aaaa},BBB,{bbbbbb} ...
2,AAA,{aaaaaaa},BBB,{bbb} ...
3,AAA,{aaaaa},BBB,{bb} ...
所以我用这种方式尝试了 sed:
sed 's/(AAA|BBB)[[:punct:]].[[:alnum:]]/\1{&}/g' dataset.txt
但是我得到了这个结果:
1,AAA,{AAA,aa}aa,BBB,{BBB,bb}bbbb, ...
2,AAA,{AAA,aa}aaaaa,BBB,[BBB,bb}b, ...
3,AAA,{AAA,aa}aaa,BBB,{BBB,bb} ...
显然,&
替换部分中的sed
将是匹配的模式,但是,我&
只想成为匹配模式之后的内容,我做错了什么?
我也尝试过添加单词边界,[^ ]
但无济于事。我太努力了sed
吗?我应该使用允许向后看的语言吗?
谢谢你的帮助!