首页 > 解决方案 > 用正则表达式匹配单词的多次迭代

问题描述

我正在尝试制作一些可以匹配以下所有字符串的正则表达式(不多也不少):

ftp
ftps
sftp
ftpes

我得到的最接近的是:^ftps?$但你可以看出它只匹配前两个。如何匹配所有列出的?我知道我可以使用类似的东西,^(ftp|ftps|sftp|ftpes)$但我想尽可能多地节省空间(我的实际应用程序比这大得多,因此更需要节省空间。我使用 ftp 示例来吸引视觉效果)。

我在 bash 3.2.57(1)-release if 语句中使用它。

标签: regexbashmacos

解决方案


我建议这个扩展的正则表达式:

^(ftpe?s|s?ftp)$

ftpe?s: 一个e是可选的

s?ftp: 一个s是可选的


请参阅:堆栈溢出正则表达式常见问题解答


推荐阅读