我有这个简单的输入
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)