lele9013 发表于 2011-8-28 23:39:45

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

比如 "常用软件 安装器"如何判断当中含了件 和器

貌似

StringInStr 只能匹配连在一起 的

lele9013 发表于 2011-8-28 23:42:02

常用软件 安装器

软件下载器

一件非常好的器具

都带有 件 和器

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


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

kxing 发表于 2011-8-28 23:54:31

(.*?件.*?器)

haodd 发表于 2011-8-28 23:56:27

用正则 {:face (203):}

3mile 发表于 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), '其中元素为: ' & $Test)
_ArrayDisplay($Test, UBound($Test))

afan 发表于 2011-8-30 01:25:01

如果多个关键词前后位置不定,貌似还是循环用 StringInStr() 判断比较简单…

lele9013 发表于 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), '其中元素为: ' & $Test)


_ArrayDisplay($Test, UBound($Test))



这个怎么匹配 某一行有呢

zerry 发表于 2011-8-30 14:16:00

正则应该是较简单的解决方法
页: [1]
查看完整版本: 请问 一段文本 如何判断当中是否有几个关键词