如何将NYTimes Spelling Bee游戏的两次grep查询合并为单个正则表达式?
合并Spelling Bee单词筛选的正则表达式方案
可以用单个PCRE正则表达式实现需求,无需两次grep调用,具体命令如下:
grep -P '^(?=.*u)[bluntam]{4,}$' /usr/share/dict/words | tr '[:upper:]' '[:lower:]'
正则逻辑说明:
(?=.*u):正向预查断言,强制单词中必须包含字母u[bluntam]{4,}:限制单词只能由指定的7个字母组成,且长度至少为4^和$:锚定字符串首尾,确保匹配的是完整单词而非片段- 后续的
tr命令统一转为小写,排除缩写和专有名词
如果环境不支持PCRE(无法使用grep -P),也可以用POSIX扩展正则的多条件匹配写法(部分grep版本支持):
grep -E '^[bluntam]{4,}$' -E 'u' /usr/share/dict/words | tr '[:upper:]' '[:lower:]'
内容的提问来源于stack exchange,提问作者qwr
相关产品推荐
相关产品推荐

