【问题标题】:Regex: match any word (including foobar), but not foo [duplicate]正则表达式:匹配任何单词(包括 foobar),但不匹配 foo [重复]
【发布时间】:2018-08-25 04:53:00
【问题描述】:

我对正则表达式很陌生,我已经看过但没有找到我正在寻找的语法。

我想匹配任何单词(包括 foobar),但不匹配 foo。然而,我发现的所有东西都用 foo 捕获了 foobar。

这样做的正确方法是什么?如果这很重要,我正在使用 Python 工作

【问题讨论】:

  • 一些输入/输出示例怎么样?
  • 试试\b(?!foo\b)\w+

标签: python regex


【解决方案1】:

(?!^foo$)^\w+$

这是对(?!) 的负面展望,表示不匹配单词foo,但匹配任何其他单词。

^$ 分别断言字符串的开始和结束。 \w+ 表示匹配任意单词字符中的一个或多个。

还有一个例子:

https://regex101.com/r/nfxyso/2

【讨论】:

  • 在任何以fo 开头的单词上都失败。
  • 谢谢,已修复!
  • 我相信 OP 正试图弄清楚如何匹配整个单词而不是它们的部分。
  • 这确实匹配整个单词而不是它们的部分......
  • @Mako212 尝试在 foobar 末尾添加句点 -- 不匹配。虽然您可以对其进行修改以处理标点符号,但正则表达式会导致人们远离更简单和更常用的单词边界概念,我认为这是初学者应该首先介绍的内容。
猜你喜欢
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 2018-08-06
  • 2016-03-17
  • 2017-04-28
  • 1970-01-01
相关资源
最近更新 更多