如何在字符串中包含字符串的所有数字子字符串?

use*_*052 3 regex perl

我想转换一个字符串,以便所有数字子序列都包含在{... }对中.

例如:

input_string = "APPL[E]5XXXX"

output_string = "APPL[E]{5}XXXX"
Run Code Online (Sandbox Code Playgroud)

例如,每个字符串可以包含一个或多个数字,BASIC76XXXXX98ZZZZ输出应该是BASIC{76}XXXXX{98}zzzz

不确定这是否可能实现.任何帮助将非常感谢.

Mar*_*der 8

我想你正在寻找这样的东西:

$string =~ s/(\d+)/{$1}/g;
Run Code Online (Sandbox Code Playgroud)

这将匹配任何连续的数字,并用$1大括号包围的第一个捕获的子串(- 与整个匹配重合)替换它们.这g是为了确保所有事件都被替换.


mrk*_*mrk 5

这肯定是可能的。

您需要一个匹配数字的正则表达式,捕获数字,然后用一组包裹的花括号替换匹配。

my $input = 'APPL[E]5XXXX';
$input =~ s/(\d+)/{$1}/g;
Run Code Online (Sandbox Code Playgroud)
  • \d+匹配位数。
  • ()捕获并存储$1
  • s///是取代正则表达式。
  • 最后,/g最后的意思是“全局”,也就是对所有比赛都这样做。