【问题标题】:Multi word match using Regex in Notepad++在 Notepad++ 中使用正则表达式进行多词匹配
【发布时间】:2017-05-04 15:32:32
【问题描述】:

好的,我在输入标题后查看了建议的页面,但仍然找不到答案。

我正在使用 Notepad++,它似乎有自己的正则表达式语法版本,但我一开始并不熟练使用正则表达式。但是,我真的很想将一个用于我在极长日志文件中进行的搜索类型。

我需要做的是找到两个或多个单词不是 an 或 '|' 的行但是一个和。查询中的所有单词都必须出现在每一行中。因此,如果有两个我匹配“(猫)(狗)”,它将返回 cat 和 dog 都出现在该行中的所有行,但不会返回只有 cat 或只有狗出现的行。

同样地,在三个元素搜索“(cat) (dog) (hamster)”中,如果它同时找到 cat 和 dog 但没有 hamster,它不会返回该行,但如果它发现所有三个都存在它会。

有人告诉我,只要在它们之间放置一个空格就可以起到“和”的作用,但这似乎不起作用。

我在 Notepad++ v7.3.3 上

【问题讨论】:

  • 在每个单词.*cat.*dog.*hamster.* 之前/之后放置一个贪心点怎么样?

标签: regex notepad++


【解决方案1】:

在正则表达式中,空格 被视为字面意思,因此“猫狗仓鼠”是catdoghamster 的串联。

在上述评论中,建议使用以下正则表达式:

.*cat.*dog.*hamster.*

其中.* 表示“0 个或多个其他字符”。但是在这种模式下,单词的顺序很重要。

如果您不希望顺序重要,可以使用以下表达式:

^(?=.*word1)(?=.*word2)(?=.*word3)

这意味着行的开头 (^) 必须跟在 ((?=)) 之后,然后是 word1word2word3,在任意数量的其他字符之后。

【讨论】:

  • 像冠军一样工作......正是我在你的第三个例子中寻找的!
  • Notepad++ 有合适的复选框用于不区分大小写的搜索。或者,您可以在正则表达式的开头添加(?i),或者您可以将每个a 替换为[Aa]
猜你喜欢
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多