正则匹配连接

上码:

string[] imgtag = { ".gif", ".jpg", ".png", ".jpeg" };
            string tpllink = "<a target=\"_blank\" style=\"color:#e25252;text-decoration: underline;\" href='{0}'>{1}</a>";
            Regex re = new Regex(@"((http|https)://)?(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[^<|^>]*)?");
            MatchCollection matchCollection = re.Matches(txtmsg);
            HashSet<string> urlKeys = new HashSet<string>();
            foreach (Match m in matchCollection)
            {
                if (imgtag.Any(x => m.Value.Contains(x)))
                {
                    continue;
                }

                if (urlKeys.Add(m.Value))
                {
                    txtmsg = txtmsg.Replace(m.Value, String.Format(tpllink, m.Value.Contains("http://") ? m.Value : "http://" + m.Value, m.Value));
                }
            }



在 Linux 环境下使用 SFTP 传输文件时,SFTP 命令本身并不直接支持正则表达式匹配,但可以通过结合 shell 脚本、`lftp` 或 `rsync` 等工具实现基于正则的文件筛选与传输功能。 ### 使用 lftp 实现正则匹配 `lftp` 是一个功能强大的命令行文件传输工具,支持 FTP、SFTP、HTTP 等协议,并且内置了正则表达式匹配功能。以下是一个使用 `lftp` 进行 SFTP 正则匹配并下载文件的示例: ```bash lftp -u username,password sftp://remote_host <<EOF cd /remote/directory lcd /local/directory mget -E "*.log" # 下载所有以 .log 结尾的文件 exit EOF ``` 如果需要更复杂的正则匹配,可以配合 `grep` 和 `awk` 提取文件列表后逐个下载: ```bash lftp -u username,password sftp://remote_host <<EOF cd /remote/directory ls | grep -E '\.txt$|\.log$' > filelist.txt cat filelist.txt | while read file; do get \$file done exit EOF ``` ### 使用 rsync + include/exclude 规则实现模糊匹配 虽然 `rsync` 不直接支持正则表达式,但可通过 `--include` 和 `--exclude` 参数组合实现类似效果。例如: ```bash rsync -avz -e ssh user@remote_host:/remote/dir/ /local/dir/ \ --include='*.log' --include='*.txt' --exclude='*' ``` 上述命令将只同步远程目录中 `.log` 和 `.txt` 文件。 ### 使用 Python 脚本结合 paramiko 模块实现正则匹配上传或下载 Python 的 `paramiko` 库支持 SFTP 协议,可以方便地实现基于正则表达式的文件操作。以下是一个简单示例: ```python import paramiko import re ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('remote_host', username='user', password='pass') sftp = ssh.open_sftp() remote_dir = '/remote/directory' pattern = re.compile(r'\.log$') for filename in sftp.listdir(remote_dir): if pattern.search(filename): sftp.get(f"{remote_dir}/{filename}", f"/local/directory/{filename}") sftp.close() ssh.close() ``` 该脚本连接到远程服务器,列出指定目录下的所有文件,并通过正则表达式匹配以 `.log` 结尾的文件进行下载。 ### 小结 - **lftp** 支持通配符和基本的正则匹配,适合批量操作。 - **rsync** 可通过规则组合实现模糊匹配,适用于日常同步任务。 - **Python + paramiko** 提供最大灵活性,适合需要复杂逻辑控制的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值