javascript - 正则表达式非排他组
问题描述
你怎么能用正则表达式得到这个结果?用字面的话来说,我希望每组连续的元音周围都有最多的辅音(向后或向前)。
例子 :
input : alliibaba
outputs :
[all]
[lliib]
[bab]
[ba]
我试过了 :
[bcdfghjklmnpqrstvwxyz]*[aeiou]+[bcdfghjklmnpqrstvwxyz]*
但它返回不同的组,所以我不知道正则表达式是否可能......
谢谢你的帮助。
解决方案
您可以将要设为非排他性的正则表达式部分放在环视模式中,以便将搜索缓冲区的该部分留给下一个匹配项。由于您的规则似乎是元音在匹配之间不重叠,而周围的辅音可以重叠,因此您可以将元音后面的辅音分组为先行模式,同时将元音和任何前面的辅音放在另一个捕获组中,然后连接 2 个匹配组成一个字符串输出:
var re = /([bcdfghjklmnpqrstvwxyz]*[aeiou]+)(?=([bcdfghjklmnpqrstvwxyz]*))/g;
var s = 'alliibaba';
var m;
do {
m = re.exec(s);
if (m)
console.log(m[1] + m[2])
} while (m);
推荐阅读
- android - Android Things console not allowing me to create a build
- python - python numpy`np.take`与二维数组
- sql - 看到 ORA-01858 发现非数字字符?
- python - 将文件上传到 s3 并取回公共 URL
- jsr352 - 在运行期间停止 JSR 批处理应用程序而不抛出异常
- javascript - 使用 java 和 video.js 实现无限视频流
- nginx - Nginx try_files 删除 client_max_body_size 选项
- mysql - 将图像更新到 MySQL 数据库时,无法将“System.Byte []”类型的对象转换为“System.IConvertible”类型
- html - HTML & CSS - 你如何显示
- 和
在同一条线上(彼此相邻)? - reactjs - 当我运行 React Native Expo 应用程序时,键盘覆盖 TextInput 表单