除特定字符串外的任何字母数字序列

2024-10-01 00:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试匹配任何包含foo<sequence of alphanumeric or space>baz的内容,除了foo<sequence of alphanumeric or space>barbaz

因此,这将匹配:

foohello there baz
foobarmystringbaz

这一定不匹配

foohellobarbaz

我目前有.*\b(foo[a-zA-Z0-9 ]+baz)\b.*,它运行良好。但我在试图增加限制时被难倒了

编辑: 我想找一个捕获组来获取匹配的部分,所以

foohellobaz barbaz

应匹配,但仅捕获foohellobaz


Tags: orof内容foospacebaztheresequence
2条回答

只需添加另一个(具有负前瞻性):

^(?!.*barbaz$)foo[\w ]+baz$

a demo on regex101.com


正如@Harm van der Warl指出的,\w也包含下划线,与[a-zA-Z0-9_]相同。这可能是你想要的,也可能不是。

如果我理解正确,你的意思是字符串可能永远不会以barbaz结尾。这是使用以下正则表达式完成的:

\bfoo[a-zA-Z0-9 ]+(?<!bar)baz\b

https://regex101.com/r/8EggsE/2

编辑:

我更新了正则表达式以匹配“foohellobaz barbaz”中的“foohellobaz”

相关问题 更多 >