抱歉,我在按照自己的意愿精确地阐述主题时遇到了问题。但我想知道你是否可以帮助我使用基本的 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”应该被捕获,但没有被捕获。
也许这可以帮助:
/^(bar)$|^.*foo.*(bar)$|^.*(foo)/mg