gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:15:39 25 4
gpt4 key购买 nike

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

我需要一个正则表达式,允许使用通配符(又名 *?)搜索这些单词。

一些例子:

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

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

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

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

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

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

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

最佳答案

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

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

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

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

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

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