基本 PCRE 表达式,用于匹配行中任意位置的单词 + 始终位于行末尾的另一个单词

问题描述 投票:0回答:1

抱歉,我在按照自己的意愿精确地阐述主题时遇到了问题。但我想知道你是否可以帮助我使用基本的 PCRE 正则表达式来匹配/捕获,如下所示: 如果行包含单词“foo”,则应在该行的任何位置捕获“foo”。如果该行包含“foo”(该行中的任何位置)以及单词“bar”,则应始终捕获“bar”,但前提是它位于该行的末尾。如果“bar”是该行中唯一的单词,则应将其捕获。所以,

"foo" -> capture "foo"
"bar foo" -> capture "foo"
"foo bar" -> capture "bar"
"bar" -> capture "bar"

我正在尝试以下操作:

~/ % pcretest
PCRE version 8.45 2021-06-15

  re> "(?:.*?(foo)?).*?(bar)?$"
data> foo
 0: foo
 1: foo
data> foo bar
 0: foo bar
 1: foo
 2: bar
data> bar
 0: bar
 1: <unset>
 2: bar
data> bar foo
 0: bar foo

行中出现错误,“bar foo”,“foo”应该被捕获,但没有被捕获。

pcre
1个回答
0
投票

也许这可以帮助:

/^(bar)$|^.*foo.*(bar)$|^.*(foo)/mg

© www.soinside.com 2019 - 2024. All rights reserved.