【问题标题】:mIRC Search for multiple words in text filemIRC 在文本文件中搜索多个单词
【发布时间】:2016-08-01 07:53:07
【问题描述】:

我正在尝试搜索一个文本文件,如果在该行中找到多个单词,它将返回一个结果。我没有在文档中看到这一点,并且我尝试了各种循环但没有成功。

我想做的是类似这样的事情:

$read(name.txt, s, word1|word2|word3)

甚至是这样的:

$read(name.txt, w, word1*|*word2*|*word3)

我不太了解 RegEx,所以我假设这可以用它来完成,但我不知道该怎么做。

【问题讨论】:

  • 作为一个正则表达式,这类似于 /(.*(word1|word2|word3).*){2,}/ ,但不确定这在 mIRC 中如何工作。
  • 这在 mIRC 中不起作用,但我会尝试一下,看看是否可以将其转换为 mIRC 语法
  • words 有多少个?
  • 可能会有所不同,但我想搜索至少 2 个在同一行中匹配的单词。
  • 我一直在尝试用循环做什么,但并没有真正成功。另外,大约有 200,000 行,所以需要一段时间。

标签: regex irc mirc


【解决方案1】:

客户端自己的文档很好,但我也推荐这个网站:http://en.wikichip.org/wiki/mirc。对于您的问题,有一篇不错的文章:http://en.wikichip.org/wiki/mirc/text_files

所有信息都是从那里获取的。所以感谢wikichip。

alias testForString {
  while ($read(file.txt, nw, *test*, $calc($readn + 1))) {
    var %line = $v1
    ; you can add your own words in the regex, seperate them with a pipe (|)
    noop $regex(%line,/(word1|word2|word3|test)/))
    echo -a Amount of results: $regml(0)
  }
}

$readn 是一个标识符,它返回$read() 匹配的行。它用于开始搜索下一行的模式。在这种情况下是test

在上面的代码中,$readn 从 0 开始。我们使用 $calc() 从第 1 行开始。每个匹配 $read() 将在下一行开始搜索。当指定的行之后没有更多匹配时,$read 将返回 $null - 终止循环。

w 开关用于在搜索中使用通配符

n 开关阻止评估它读取的文本,就像它是 mSL 代码一样。在几乎 EVERY 的情况下,您必须使用 n 开关。除非你真的需要它。不正确地使用没有 'n' 开关的 $read() 标识符可能会使您的脚本极易受到攻击。

结果存储在名为%line 的变量中,以备日后需要时使用。

之后,我们使用noop 执行正则表达式来满足您的需求。在这种情况下,您可以使用$regml(0) 查找在您的正则表达式搜索中指定的匹配数量。使用 if 语句可以查看是否有两个或多个匹配项。

希望对您有所帮助,如果有什么不清楚的地方,我会尽力解释得更好。

编辑

@cp022 我无法发表评论,所以我会在这里发表我的评论,那么这对从文本文件中读取内容有何帮助?

【讨论】:

  • 哇,我的错误没有从文件中读取,只读取了“检查多个单词”。将尽快删除我的答案感谢您的更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多