我试图编写一个正则表达式来匹配有效的 ssh 连接字符串,但没有成功。
我真的只需要识别格式的字符串:
- 用户@主机名:/一些/路径
但最好也匹配一个隐式主目录:
- 用户@主机名:
到目前为止,我已经想出了这个正则表达式:
/^[:alnum:]+\@\:(\/[:alnum:]+)*$/
它没有按预期工作。
在我的大脑爆炸并且我开始用噪音说话之前欢迎任何建议 :)
最佳答案
您提供的正则表达式没有主机名部分。尝试:
/^[:alnum:]+\@[:alnum:\.]\:(\/[:alnum:]+)*$/
或
/^[A-Za-z][A-Za-z0-9_]*\@[A-Za-z][A-Za-z0-9_\.]*\:(\/[A-Za-z][A-Za-z0-9_]*)*$/
因为我不相信没有双括号的 alnum。
此外,:alnum: 可能无法为您的部分提供所需的范围。你可以有 ”。”主机名中的字符,并且可能还需要允许使用“_”字符。我很少看到用户名或主机名以非字母开头。
作为旁注,我尽量避免使用增强型正则表达式,因为它们并非在所有正则表达式引擎上运行(我使用 UNIX 已有很长时间)。不幸的是,这使我的正则表达式笨拙(见上文)并且不太国际化。对此深表歉意。
关于regex - 匹配 ssh 连接字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355723/