我想转换一个字符串,以便所有数字子序列都包含在{
... }
对中。
例如:
input_string = "APPL[E]5XXXX"
output_string = "APPL[E]{5}XXXX"
每个字符串可能包含一个或多个数字,例如BASIC76XXXXX98ZZZZ
,输出应为BASIC{76}XXXXX{98}zzzz
不确定这是否可能实现。任何帮助将非常感谢。
答案 0 :(得分:8)
我认为你正在寻找这样的东西:
$string =~ s/(\d+)/{$1}/g;
这将匹配任何连续的数字,并将其替换为第一个捕获的子串($1
- 与整个匹配重合),并用大括号括起来。 g
是为了确保所有匹配项都被替换。
答案 1 :(得分:4)
这肯定是可能的。
你想要一个匹配数字的正则表达式,捕获数字,然后用一组包裹的花括号替换匹配。
my $input = 'APPL[E]5XXXX';
$input =~ s/(\d+)/{$1}/g;
\d+
匹配数字。 ()
捕获并存储在$1
中。 s///
是替换正则表达式。/g
最后意味着'全球',也就是说,对所有比赛都这样做。