小编KDo*_*van的帖子

Perl REGEX 替换每个 ! with ~ 仅当被引号包围时

我正在编写从 Fortran 77 到 Fortran 90 的转换脚本,并尝试使用 PERL REGEX 替换每个 ! 如果在引号中找到,则带有 ~ 。

这个>'Hello !!!! Hello !!!!' 变成>'Hello ~~~~ Hello ~~~~'

这个>'Hello' !!!! 'Hello !!!!' 变成>'Hello' !!!! 'Hello ~~~~'

我不知道如何使用音译,因为它必须只在引号中使用我能做的最好的是:

perl -pi -e "s/('.*?)\!+(.*')/\1~\2/g" File.txt
Run Code Online (Sandbox Code Playgroud)

但这将 4 !s替换为 1~ 并且甚至不会更改第二组!s

这个>'Hello !!!! Hello !!!!' 变成>'Hello ~ Hello !!!!'

这个> 'Hello' !!!! 'Hello !!!!'变成>'Hello' !!!! 'Hello ~'

没有+之后\!!无论如何只替换第一个所以你得到'Hello ~!!!'

我似乎无法计算每个! …

regex perl substitution

4
推荐指数
1
解决办法
73
查看次数

标签 统计

perl ×1

regex ×1

substitution ×1