当前位置: 首页 > 知识库问答 >
问题:

允许缺少字符的Regex

云默
2023-03-14

我试图找到一种方法来确定一个字符串是否至少包含n个特定顺序的字符。

我正在处理大量的手写数据,错别字的数量相当疯狂。

我需要在一个大字符串中查找文本部分,如下所示:

 (m|M)(o|O)(n|N)(k|K)(e|E)(y|Y),?\s+(c|C)(h|H)(i|I)(m|M)(p|P)(\s+)?:

看起来有点奇怪,但很管用。

不幸的是,怪异还不止于此。我需要修改这个regex,以便它也允许每个单词中缺少1个字母。

因此,我需要修改这个regex,以便它也适用于以下内容:

我一直在研究{4},但我不确定这是正确的方向,也不确定它是否可以应用于这里。

提前感谢,彼得

共有1个答案

景麒
2023-03-14

对于纯regex,您所能做的最好的事情是(为了可读性添加了空白):

/
  ^
  (
    monkey\s*,?\s*chimp\s*:
  |
    onkey\s*,?\s*chimp\s*:
  |
    mnkey\s*,?\s*chimp\s*:
  |
    ...
  )
  $
/ix

但是,这是一个非常冗长的方法,仍然不能解释所有其他模糊匹配,如“monkey,chinp:”“monkey;chimp:”

您可以采取的另一种方法是首先检查字符串的长度:

/^\w{10,15}$/
/m?o?n?k?e?y?\s*,?\s*c?h?i?m?p?\s*:/i
"mon      c:"
 类似资料:
  • 问题内容: 我正在使用Base64编码来编码Java中的用户ID字段。 我想知道上面的字符串abc是否包含字符“,:”吗? 当以abc返回Base64编码的字符串时,它是否会包含以下字符? 问题答案: 您不会在Base64编码的字符串中看到任何逗号,冒号或双引号。由于等号用于填充结尾内容,因此您会看到等号。

  • 我正在考虑从Hibernate转移到jOOQ,但我找不到例如如何在Hibernate中对这样的进行Pattern约束: 在jOOQ我该怎么做?

  • 我正在尝试将webUntis(文档)API用于学校项目。现在,我只是尝试建立与API的任何类型的连接。 此代码产生以下错误消息: 已阻止跨源请求:同一源策略禁止读取位于的外部资源https://api.webuntis.dk/api/status(原因:缺少CORS标头“访问控制允许来源”)。 这个问题可能如何解决?也许我的API密钥是错误的? 免责声明:错误消息是从德语翻译过来的。

  • 我的要求是: 字符串应至少包含4个字符(仅允许字母数字、点和连字符) 除此之外,任何地方(开始、中间或结束)都可以使用星号 它不应包含上文第1点和第2点中提及的任何其他字符 例如,以下是有效的字符串: 以下是无效字符串: 我的正则表达式看起来像: 我在第1点和第2点中提到的基本验证是有效的。但正则表达式允许其他特殊字符,如

  • 问题内容: CSS标识符和的(完整)有效/允许的 字符集 字符是什么? 是否可以使用正则表达式进行验证?它与浏览器无关吗? 问题答案: 字符集无关紧要。允许的字符更重要。检查CSS规范。这里是相关的: 在CSS中,标识符(包括选择器中的元素名称,类和ID )只能包含字符和ISO 10646 及更高版本的字符,以及连字符()和下划线();它们不能以数字,两个连字符或连字符后跟数字开头。标识符还可以包

  • 我一直在捕捉非数字时遇到问题。 我试过了,但抓不住。如果我让它捕获非数字,但不让用户再次尝试输入。。。它完全停止了我的代码。 这是我的密码: