gpt4 book ai didi

perl - 使用相同的语法按 2 条规则分割线

转载 作者:行者123 更新时间:2023-12-01 07:29:56 25 4
gpt4 key购买 nike

我有一条线:

Jon Favreau, Stan Lee, Justin Theroux, Robert Downey Jr. (Tony Stark) Gwyneth Paltrow (Pepper Potts) Don Cheadle (James Rhodes)

我想用逗号分隔行并用括号括起来,结果如下:
Jon Favreau
Stan Lee
Justin Theroux
Robert Downey Jr. (Tony Stark)
Gwyneth Paltrow (Pepper Potts)
Don Cheadle (James Rhodes)

编辑:特殊情况

阵容:乔恩·费儒、斯坦·李、贾斯汀·塞洛克斯、罗伯特·唐尼(小)(托尼·斯塔克)格温妮丝·帕特洛(小辣椒)唐·钱德尔(詹姆斯·罗德)

世界(Jr.)陷入困境。输出:
Jon Favreau
Stan Lee
Justin Theroux
Robert Downey (Jr.) (Tony Stark)
Gwyneth Paltrow (Pepper Potts)
Don Cheadle (James Rhodes)

最佳答案

使用时split ,您可以决定是丢弃分隔符还是保留它们。在您的情况下,您希望保留一个分隔符(右括号)并丢弃另一个(逗号)。此外,您可能希望丢弃这些分隔符之后的任何空格。

分隔符可以通过以下方式保留:

  • 附上 split捕获括号的模式。在这种情况下,分隔符本身最终将作为单独的字符串,穿插在您的结果中,这并不是您想要的。
  • 在零宽度断言中指定分隔符(后视、前瞻等)。这会从匹配的字符串中排除分隔符,从而防止它被丢弃。

  • 第二种方法对你很有效。
    my @actors = split /(?<=\)) *|, */, $line;

    要处理您编辑的问题中更复杂的场景,例如“Robert Downey (Jr.) (Tony Stark)”,您可以添加另一个零宽度断言:
    my $actor_regex = qr'
    (?<= \) ) # Look-behind: close paren.
    \s*
    (?! \s* \( ) # Negative look-ahead: opening paren.
    |
    , \s* # Or the other delimiter.
    'x;

    my @items = split $actor_regex, $line;

    关于perl - 使用相同的语法按 2 条规则分割线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7377812/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com