正则分类筛选

前段时间需要对用户在后台提交的信息进行整理。提交的信息不能有html之类的格式,但是会夹杂着图片和文本。后台需要对提交的信息进行筛选把图片和文本分离,并且最终转为json格式保存以便接口调用。考虑到上述要求,我没有提供编辑器,而是采用以下方式让用户操作:单独提供一个上传功能,上传后返回图片路径,用户按需求自行编辑图片路径及其余文本,最后提交。

代码:
// 用户提交的内容
$str = <<<"STR"
uploads/kaka.png
内容一:这是个测试文本内容
uploads/haha.png
内容二:这是个测试文本内容
uploads/test.jpeg
uploads/abc.gif
内容三:这是个测试文本内容
uploads/kaka.PNG
uploads/jpg
内容四:这是个测试文本内容
STR;

// 筛选图片
$pattern = "/uploads+\/((?!uploads+).)+(jpeg|jpg|png|gif)/i";

preg_match_all($pattern, $str, $uploads); // 获取匹配部分(图片)
$uploads = $uploads[0];

$others = preg_split($pattern, $str, 0);   // 获取非匹配部分(文本)

$final = array();
foreach($others as $key => $val) {
    // 文本
    $final[] = array(
        'type' => 0,
        'content' => $val
    );

    foreach($uploads as $k => $v) {
        // $key == $k,按顺序添加
        if($key == $k){
            // 图片
            $final[] = array(
                'type' => 1,
                'content' => $v
            );
        }
    }
}

$final = json_encode($final);
print_r($final);
### 使用正则表达式筛选评论的方法 正则表达式是一种强大的工具,可用于匹配、查找和替换文本。它广泛应用于文本处理场景中,包括筛选评论的任务。以下是关于如何使用正则表达式筛选评论的具体方法和示例。 #### 方法概述 要筛选评论,通常需要关注以下几个方面: - **关键词匹配**:识别特定词语或短语的存在。 - **排除无关内容**:忽略不相关的词汇或句型。 - **上下文理解**:考虑评论的整体结构及其含义。 可以通过编写合适的正则表达式来完成上述目标[^1]。 --- #### 示例代码 假设我们有一组评论数据存储在一个列表中,并希望从中筛选出包含某些敏感词(如“广告”或“垃圾邮件”)的评论: ```python import re comments = [ "这款产品真的很棒!", "这是一条广告,请勿相信。", "产品质量不错,值得购买。", "这是典型的垃圾邮件行为。", "强烈推荐给大家!" ] # 定义正则表达式模式 pattern = r"(?i)\b(广告|垃圾邮件)\b" filtered_comments = [] for comment in comments: if re.search(pattern, comment): # 查找是否存在匹配项 filtered_comments.append(comment) print(filtered_comments) ``` 此脚本会输出如下结果: ``` ['这是一条广告,请勿相信。', '这是典型的垃圾邮件行为。'] ``` 在此例子中,`(?i)` 表示忽略大小写;`\b` 是单词边界符,确保只匹配完整的单词而不是部分子串[^3]。 如果需要进一步扩展功能,比如支持多语言或者更复杂的条件判断,则可以根据具体需求调整正则表达式的复杂度。 --- #### 工具建议 对于初学者来说,在实际编码之前先借助一些在线正则测试工具是非常有帮助的。这类工具有助于快速验证想法并改进规则设计。例如,可以尝试 RegExr 或 Debuggex 这样的平台来进行互动练习。 另外,在 R 语言环境中也可以很方便地运用正则表达式进行类似的文本挖掘工作[^2]。下面给出一段简单的 R 脚本作为补充说明: ```R library(stringr) comments <- c( "这款产品真的很棒!", "这是一条广告,请勿相信。", "产品质量不错,值得购买。", "这是典型的垃圾邮件行为。", "强烈推荐给大家!" ) patterns <- "(?i)\\b(广告|垃圾邮件)\\b" matches <- str_subset(comments, patterns) print(matches) ``` 运行该程序同样能得到预期的结果集。 --- #### 总结 通过合理构建正则表达式模型,结合编程语言内置的支持库函数,能够有效实现对大量非结构化文本数据的有效过滤与分类操作。持续试验不同组合形式直至达到理想效果是掌握这项技能的关键所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值