具有负前瞻和负前瞻正则表达式的Sed替换

具有负前瞻和负前瞻正则表达式的Sed替换,sed,Sed,我必须用文本替换范围35-79和235-249中的所有数字,让我们说“hello world” 几分钟后,我想到了这个表达: sed -r "s/((3[5-9]|[4-7][0-9])|(23[5-9]|24[0-9]))/[\1 hello world]/g" file1.txt > file2.txt 我遇到的问题是,它还将较大数字的部分识别为有效数字。例如,在数字256中,56被检测为有效输入,这不是我想要的。这些数字前面和后面都有空格或随机字母数字字符,因此

我必须用文本替换范围35-79235-249中的所有数字,让我们说“hello world”

几分钟后,我想到了这个表达:

sed -r "s/((3[5-9]|[4-7][0-9])|(23[5-9]|24[0-9]))/[\1 hello world]/g" file1.txt > file2.txt
我遇到的问题是,它还将较大数字的部分识别为有效数字。例如,在数字256中,56被检测为有效输入,这不是我想要的。这些数字前面和后面都有空格或随机字母数字字符,因此使用单词边界将不是一个选项。我使用负向后看和负向前看解决了这个问题,得到了以下结果:

sed -r "s/(((?<![0-9])3[5-9](?![0-9])|(?<![0-9])[4-7][0-9](?![0-9]))|(23[5-9]|24[0-9]))/[\1 hello world]/g" file1.txt > file2.txt
sed-r“s/(?With
perl

$echo'40-840-236;59a'| perl-pe's/(?