regex - 如何使用正则表达式匹配需要满足多个需求的模式?
问题描述
我在egrep
尝试找出用于正则表达式模式匹配的 AND 类似运算符时遇到问题,我需要匹配给定字符串列表中必须满足多个条件的所有字符串,这是我遇到的一些问题
1) 找到包含两个连续 e 并且还包含至少两个 i 的单词集合(ieei
有效)
2) 找到至少 5 个字符长且不包含任何元音的单词集
我尝试使用前瞻(?=.*?ee)(?=.*?i.*i)
,但它不起作用,我在这里错过了什么?
解决方案
正如Sundeep所提到的,您的grep
实现可能通过使用标志来支持 PCRE -P
,在这种情况下,以下将起作用:
grep -P '(?=.*?ee)(?=.*?i.*i)'
否则,您可以改用以下 ERE 模式:
[^ ]*(i[^ ]*ee[^ ]*i|i[^ ]*i[^ ]*ee|ee[^ ]*i[^ ]*i)[^ ]*
它匹配符合这三种模式之一的单词:
- 该词包含一个 i 后跟两个连续的 e 后跟另一个 i
- 该单词包含一个 i 后跟另一个 i 后跟两个连续的 e
- 该单词包含两个连续的 e 后跟一个 i 后跟另一个 i
推荐阅读
- loadrunner - Load Runner 中动态页面的脚本
- node.js - 包含自定义函数的模块在 Express/Node 应用程序中位于何处?
- .net-core - 在 Blazor 服务器应用的 AuthenticationStateProvider 中访问 Http.Context
- xamarin - 如何在 Xamarin Forms 上创建图像选择器?
- java - 文件的第一个单词没有被 hashmap.containskey 识别为与文件中稍后出现的其他单词相同的单词
- qt - QT:试图引用已删除的函数
- react-native - React Native UWP (vnext) - 导入 react-navigation-stack 会导致错误:“无法读取未定义的属性‘方向’”
- asp.net - 如何使用 asp vb .net 删除 asp:panel 的 CssClass?
- java - 嵌套类型的通配符
- java - 如何实现滑动窗口或减少这些嵌套循环?