gpt4 book ai didi

java - 正则表达式通配符匹配

转载 作者:IT老高 更新时间:2023-10-28 20:51:13 25 4
gpt4 key购买 nike

我有一个大约 12 万个英语单词的列表(基本上是该语言中的每个单词)。

我需要一个允许使用通配符搜索这些单词的正则表达式,也就是 *?

几个例子:

  • 如果用户搜索 m?st*,它将匹配例如 mastermistermistery.
  • 如果用户搜索 *ind(任何以 ind 结尾的词),它将匹配 windbindblindgrind

现在,大多数用户(尤其是不熟悉正则表达式的用户)都知道,? 可以替换 1 个字符,而 * 可以替换0、1 个或多个字符。我绝对想在此基础上构建我的搜索功能。

我的问题是:如何将用户输入的内容(例如 m?st*)转换为正则表达式?

我搜索了网络(显然包括这个网站),我能找到的都是试图教给我太多东西的教程或有些相似的问题,但不足以为我自己的问题提供答案。

我能想到的只是我必须将 ? 替换为 .。所以 m?st* 变成 m.st*。但是,我不知道用什么替换 *

任何帮助将不胜感激。谢谢。

PS:我对正则表达式完全陌生。我知道它们有多么强大,但我也知道它们可能很难学习。所以我只是从来没有花时间去做...

最佳答案

除非你想要一些有趣的行为,否则我建议你使用 \w 而不是

. 匹配空格和其他非单词符号,您可能不希望它这样做。

所以我会将 ? 替换为 \w 并将 * 替换为 \w*

此外,如果您希望 * 至少匹配一个字符,请将其替换为 \w+。这意味着 ben* 将匹配 bendbending 但不匹配 ben - 这取决于你,只是取决于你的要求是什么。

关于java - 正则表达式通配符匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com