找回密码
 加入
搜索
查看: 2843|回复: 7

[AU3基础] 请问 一段文本 如何判断当中是否有几个关键词

  [复制链接]
发表于 2011-8-28 23:39:45 | 显示全部楼层 |阅读模式
比如 "常用软件 安装器"  如何判断当中含了  件 和  器

貌似

StringInStr 只能匹配连在一起 的
 楼主| 发表于 2011-8-28 23:42:02 | 显示全部楼层
常用软件 安装器

软件下载器

一件非常好的器具

都带有 件 和  器

我想做个exe 遇到带有特定词语的 就提取出来


但怎么判断呢 他们并非连在一起
发表于 2011-8-28 23:54:31 | 显示全部楼层
(.*?件.*?器)
发表于 2011-8-28 23:56:27 | 显示全部楼层
用正则
发表于 2011-8-29 12:25:38 | 显示全部楼层
又涉及到中文分词,人工智能.
以下代码仅将"件,器"作为"名词","数量词"时匹配,不保证正确.慎用
仅仅抛砖引玉

#include <Array.au3>
Local $Str = _
                '常用软件 安装器' & @CRLF & @CRLF & _
                '软件下载器' & @CRLF & @CRLF & _
                '一件非常好的器具' & @CRLF & @CRLF & _
                '都带有 件 和  器' & @CRLF & @CRLF & _
                '我想做个exe 遇到带有特定词语的 就提取出来' & @CRLF & @CRLF & @CRLF & _
                '但怎么判断呢 他们并非连在一起'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '[^的地得 ].*?[^的地得 ][件器]|[件器].*?\s', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中[0]元素为: ' & $Test[0])
_ArrayDisplay($Test, UBound($Test))
发表于 2011-8-30 01:25:01 | 显示全部楼层
如果多个关键词前后位置不定,貌似还是循环用 StringInStr() 判断比较简单…
 楼主| 发表于 2011-8-30 11:18:13 | 显示全部楼层
楼上的怎么用呢。。单字匹配吗

#include <Array.au3>


Local $Str = _


                '常用软件 安装器' & @CRLF & @CRLF & _


                '软件下载器' & @CRLF & @CRLF & _


                '一件非常好的器具' & @CRLF & @CRLF & _


                '都带有 件 和  器' & @CRLF & @CRLF & _


                '我想做个exe 遇到带有特定词语的 就提取出来' & @CRLF & @CRLF & @CRLF & _


                '但怎么判断呢 他们并非连在一起'


MsgBox(0, '原字符串', $Str)


Local $Test = StringRegExp($str, '[^的地得 ].*?[^的地得 ][件器]|[件器].*?\s', 3)


If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中[0]元素为: ' & $Test[0])


_ArrayDisplay($Test, UBound($Test))



这个怎么匹配 某一行有呢
发表于 2011-8-30 14:16:00 | 显示全部楼层
正则应该是较简单的解决方法
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 06:54 , Processed in 0.083257 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表