【发布时间】:2017-07-06 18:55:09
【问题描述】:
我有包含 300 000 多个单词的单词数据库
我想匹配长度已知的单词(例如 7)并且它包含 只有某些字符,其中一些字符可以重复某些次,但不是全部
例如
我有 a,p,p,l,e,r,t,h,o 字符,我想找到长度为 5 的单词
所以,它可以匹配
appleearth
但不是
hello 因为l 被指定了不止一次
我的尝试
^([a,p,p,l,e,r,t,h,o]{1}) # capture first char
(!/1 [a,p,p,l,e,r,t,h,o]{1}) # capture second char but without firstly captured symbol
(!/1 !/2 [a,p,p,l,e,r,t,h,o]{1}) # capture third char but without first and second captured symbol
and so on ...
【问题讨论】:
-
PLS,评论一下这个问题有什么问题,我会纠正它,而不是投反对票
-
你的任意应该匹配/不应该匹配的例子并不清楚底层逻辑应该是什么。描述那个。另外,SO 不是“我想要,你做”类型的网站。你需要向我们展示你的尝试。
-
不确定是否应该首先使用正则表达式...但是如果必须这样做,我可能会首先按字母顺序对所有这些单词的字符进行排序(通过您的附加列表),因为创建一个涵盖这些字母的所有可能顺序的正则表达式不会很有趣。然后你使用匹配的量词创建你的正则表达式 - 所以对于你最初包含字母 a 的示例,这可能是一个简单的
a?,对于出现两次的 p,p{0,2}- 匹配零到两个 p 字符等. -
使用正则表达式可以解决很多问题,但这真的不是正则表达式问题。您应该尝试创建一种方法来计算单词中的字符,并根据预期的字符数进行检查。我必须承认这是一个有趣的问题
-
@CBroe 这是一个有趣的解决方案 :)
标签: regex