gpt4 book ai didi

regex - 这是否违反了 'leftmost longest' 原则?

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

我正在尝试编写一个正则表达式来识别单行文本,下划线 ( _ ) 被识别为行继续符。例如,“foo_\nbar”应被视为单行,因为“foo”以下划线结尾。我在尝试:

$txt = "foo_\nbar";
print "$&\n" if $txt =~ /.*(_\n.*)*/;

但是,这仅打印:
foo_

这似乎违反了 Perl 正则表达式的“最左最长”规则!

有趣的是,如果我删除正则表达式中的最后一个星号 (*),即:
$txt = "foo_\nbar";
print "$&\n" if $txt =~ /.*(_\n.*)/;

是否打印:
foo_
bar

但我需要星星来识别“0 或更多”的延续!

我究竟做错了什么?

最佳答案

@ysth 解释了为什么会发生这种情况。要修复它,您可以使用以下正则表达式:

/([^_\n]|_.)*/s

关于regex - 这是否违反了 'leftmost longest' 原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3127591/

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