小编kem*_*ski的帖子

在分隔符之间随机化文本

我有这个简单的输入

I have {red;green;orange} fruit and cup of {tea;coffee;juice}
Run Code Online (Sandbox Code Playgroud)

我使用Perl两个外部支架之间的分隔符标识模式{},和随机内部与内部分隔符的字段;.

我得到了这个输出

I have green fruit and cup of coffee
Run Code Online (Sandbox Code Playgroud)

这是我工作的Perl脚本

perl -plE 's!\{(.*?)\}!@x=split/;/,$1;$x[rand@x]!ge' <<< 'I have {red;green;orange} fruit and cup of {tea;coffee;juice}'
Run Code Online (Sandbox Code Playgroud)

我的任务是处理这种输入格式

I have { {red;green;orange} fruit ; cup of {tea;coffee;juice} } and {nice;fresh} {sandwich;burger}.
Run Code Online (Sandbox Code Playgroud)

据我所知,脚本应跳过{ ... }第一个文本部分中的外部闭括号,其中包含开括号和右括号的文本:

{ {red;green;orange} fruit ; cup of {tea;coffee;juice} }
Run Code Online (Sandbox Code Playgroud)

它应该选择一个随机的部分,像这样

{red;green;orange} fruit
Run Code Online (Sandbox Code Playgroud)

要么

cup of {tea;coffee;juice}
Run Code Online (Sandbox Code Playgroud)

然后它更深入:

green fruit
Run Code Online (Sandbox Code Playgroud)

处理完所有文本后,结果可能是以下任何一种

I have red fruit …
Run Code Online (Sandbox Code Playgroud)

shell perl text-processing text-parsing

6
推荐指数
1
解决办法
79
查看次数

标签 统计

perl ×1

shell ×1

text-parsing ×1

text-processing ×1