精华内容
下载资源
问答
  • 快速在多个word文件里面检索到关键字 标签: windows 之前看论文做了很多笔记,直接用word写的笔记。 然后,今天忽然需要过去做的一个笔记,但是只知道里面关键字xx。 所以看着我那一年的笔记量,我陷入的沉思,我...

    快速在多个word文件里面检索到关键字

    标签: windows


    之前看论文做了很多笔记,直接用word写的笔记。

    然后,今天忽然需要过去做的一个笔记,但是只知道里面关键字xx

    所以看着我那一年的笔记量,我陷入的沉思,我肯定不能一个个打开搜索呀,那估计要搞一段时间,后来我就后悔没有直接写在有道云笔记上,这样就能直接搜索了。

    后来发现windows的搜索原来这么强,还能够搜索内容:

    2019-10-24_213802.jpg

    只要在搜索框中加入内容:即可。

    除此之外,也可以通过软件XSearch进行搜索,我测试了一下,结果也不错。下载链接 https://en.softonic.com/download/xsearch/windows/post-download

    既然谈到了搜索,就再推荐两个搜索的软件,第一个是EveryThing,这个软件比win自带的龟速软件快的多,可以自行搜索下载,Listary 类似于Everything的一个软件,DocFetcher同样能够按内容搜索的软件。

    展开全文
  • 这不是源代码,是通过C#VS2010下实现的,可以说是个小工具,实现的功能是:打开某一文件下的所有word文档,然后设置一个或多个关键字,然后查找这些关键字是否在word中出现,并将word文档名和关键字保存excel的...
  • grep查找多个关键字

    2020-11-16 17:02:05
    grep功能丰富。一般情况下是搜索单个字符串。但是有些需求下是申请多个字符串可以使用命令 grep -E "hello,word" code.txt这种方式进行多个字符串内容的搜索

    grep功能丰富。一般情况下是搜索单个字符串。但是有些需求下是申请多个字符串可以使用命令
    grep -E "hello,word" code.txt这种方式进行多个字符串内容的搜索

    展开全文
  • 具体的工作需求:指定的Word文档(*.doc文件/*.docx文件)中查找关键字,找到后做高亮操作或者直接删除操作,然后另存为到别的目录(表示这文件被操作过了)。 这功能很简单,确实挺简单,但由于是第一次用...

    最近由于项目需要,要用QT操作Word文档。具体的工作需求:在指定的Word文档(*.doc文件/*.docx文件)中查找关键字,找到后做高亮操作或者直接删除操作,然后另存为到别的目录(表示这个文件被操作过了)。

     

    这个功能很简单,确实挺简单,但由于是第一次用QT操作Word文档,所以仍需要经过一番查找资料。网上用QT操作Word文档的资料不是很多(可能是我没找对地方),所以经过了一段时间的碰壁之后(没有现成的,哪怕是半成品),我决定还是从源头看起:

      1.查看帮助文档:Microsoft Word Visual Basic参考.chm。这是操作Word文档的VBA接口文档

      2.查看官方网站的帮助文档:https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word?view=word-pia

        “查找”在这:https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word.find.hithighlight?view=word-pia#Microsoft_Office_Interop_Word_Find_HitHighlight_System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__System_Object__

     

    要想用QT操作office文档,就要用到QAxWidget类和QAxObject类首先要在pro文件中配置一个模块“qaxcontainer”,也就是添加一行代码,即:

      CONFIG += qaxcontainer

    在找到关键字之后,我还保存了一些数据:文件名、文件所在的路径、关键字所处的位置。如果你不需要这些数据,可以删减掉。

    QList<QString> fileNameList;    // 保存文件名
    QList<QString> filePathList;    // 保存文件路径
    QList<QStringList> keyWordsPositionList;    // 保存关键字所在位置

    首先介绍一个函数,这个函数通过正则表达式用来定位关键字所处在的语句。这个函数会在后面的高亮操作函数和直接删除函数里调用到:

    // 查找关键字的位置
    // fileContent:文件内容;keyWord:关键字
    QStringList findKeyWordsPosition(QString fileContent, QString keyWord)
    {
        QStringList resList;
        if (fileContent.contains(keyWord)){
            qDebug() << QObject::tr("包含子字符串 : %1").arg(keyWord);
    
            int startIndex = 0;
    //        int count = 0;
            int keyWordsLen = keyWord.length();
            QRegExp rx(QObject::tr("[,。:\r]?([^,。:\r]*(%1)[^,。:\r]*)[,。:\r]?").arg(keyWord));
    
            while ((startIndex = rx.indexIn(fileContent, startIndex)) != -1){
                QString resStr = rx.cap(1).mid(0);   // 提取子字符串所在的语句
                if (resStr.contains("\r"))
                    resStr.replace("\r", "");
                resList << resStr;
    
                // 找到子字符串
                int findIndex = fileContent.indexOf(keyWord, startIndex);
    //            qDebug() << QObject::tr("keyWords 出现的位置 : %1").arg(findIndex);
                startIndex = findIndex + keyWordsLen;
    //            qDebug() << QObject::tr("keyWords 出现的次数 : %1").arg(++count);
                qDebug() << "\n";
            }
    
            return resList;
        }
        return resList << "";
    }

    首先是高亮操作函数:

     

    // 高亮操作函数
    //
    dirName:是待检查文件的路径;keyWords:是要查找的关键字(查找的关键字可能是多个) bool highLightKeyWordsinWordFile(QString dirName, QStringList keyWords) { int lastSeparatorIndex = dirName.lastIndexOf(QDir::separator()); QString saveAsFilePath = storeDir + dirName.mid(lastSeparatorIndex+1); // 另存为的路径 QAxWidget wordApplication("Word.Application"); QAxObject *documents = wordApplication.querySubObject("Documents"); documents->dynamicCall("Open(const QString&)", dirName); wordApplication.setProperty("Visible", QVariant(false)); QAxObject* m_doc = wordApplication.querySubObject("ActiveDocument"); // 获取当前工作簿 QAxObject* pRange = m_doc->querySubObject("Content()"); if (NULL != pRange) { // 查找关键字 QAxObject *pFind = pRange->querySubObject("Find()"); QStringList keyWordsPosition; if (NULL != pFind) { pFind->dynamicCall("ClearFormatting()"); pFind->setProperty("Format", true); pFind->setProperty("MatchCase", false); pFind->setProperty("MatchWholeWord", false); pFind->setProperty("MatchByte", true); pFind->setProperty("MatchWildcards", false); pFind->setProperty("MatchSoundsLike", false); pFind->setProperty("MatchAllWordForms", false); for (int i=0; i<keyWords.size(); ++i){ // 找到关键字所在的位置,得到一个position,将position添加到keyWordsPosition中。 QString keyWord = keyWords.at(i); QStringList position = findKeyWordsPosition(pRange->property("Text").toString(), keyWord); if (!position.contains("")){ keyWordsPosition << position; pFind->setProperty("Text", keyWord); pFind->dynamicCall("Execute()"); while (pFind->property("Found").toBool()) { bool isHighlight = pFind->parent()->setProperty("HighlightColorIndex","wdYellow"); pFind->dynamicCall("Execute()"); if (!isHighlight) { delete pFind; pFind = NULL; delete pRange; pRange = NULL; m_doc->dynamicCall("Close(boolean)", true); wordApplication.dynamicCall("Quit ()"); delete m_doc; m_doc = NULL; return false; } } } } } if (keyWordsPosition.size() >= 1){ QString fileName = dirName.mid(lastSeparatorIndex+1); QString filePath = dirName.mid(0, lastSeparatorIndex+1); fileNameList << fileName; filePathList << filePath; keyWordsPositionList << keyWordsPosition; m_doc->dynamicCall("SaveAs(const QString)", saveAsFilePath); } delete pFind; pFind = NULL; delete pRange; pRange = NULL; m_doc->dynamicCall("Close(Boolean)", true); m_doc->dynamicCall("Quit()"); delete m_doc; m_doc = NULL; return true; } return true; }

    下面这个是直接删除操作函数

    // dirName:是待检查文件的路径;keyWords:是要查找的关键字(查找的关键字可能是多个)
    bool directDeleteKeyWordsinWordFile(QString dirName, QStringList keyWords)
    {
        int lastSeparatorIndex = dirName.lastIndexOf(QDir::separator());
        QString saveAsFilePath = storeDir + dirName.mid(lastSeparatorIndex+1);        // 另存为的路径
    
        QAxWidget wordApplication("Word.Application");
        QAxObject *documents = wordApplication.querySubObject("Documents");
        documents->dynamicCall("Open(const QString&)", dirName);
        wordApplication.setProperty("Visible", QVariant(false));
        QAxObject* m_doc = wordApplication.querySubObject("ActiveDocument");    // 获取当前工作簿
        QAxObject* pRange = m_doc->querySubObject("Content()");
        QList<QVariant> vars;
    
        if (NULL != pRange)
        {
            // 查找关键字
            QAxObject *pFind = pRange->querySubObject("Find()");
            QStringList keyWordsPosition;
            if (NULL != pFind)
            {
                pFind->dynamicCall("ClearFormatting()");
                QAxObject *replacement = pFind->querySubObject("Replacement()");
                replacement->dynamicCall("ClearFormatting()");
    
                for (int i=0; i<keyWords.size(); ++i){
                    QString keyWord = keyWords.at(i);
                    // 找到关键字所在的位置,得到一个position,将position添加到keyWordsPosition中。
                    QStringList position = findKeyWordsPosition(pRange->property("Text").toString(), keyWord);
                    if (!position.contains("")){
                        keyWordsPosition << position;
                        vars << keyWord << false << false << false << false
                             << false << true << 1<< false << ""
                             << 2 << false << false << false << false; // wdReplaceNone-->0;wdReplaceAll-->2;wdReplaceOne-->1
                        bool isReplaced = pFind->dynamicCall("Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, "
                                                            "MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, "
                                                            "Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)", vars).toBool();
                        if (!isReplaced){
                            delete pFind;
                            pFind = NULL;
                            delete pRange;
                            pRange = NULL;
                            m_doc->dynamicCall("Close(Boolean)", true);
                            m_doc->dynamicCall("Quit()");
                            delete m_doc;
                            m_doc = NULL;
                            QMessageBox openFileError(QMessageBox::Warning,
                                                      QObject::tr("文件处理错误"),
                                                      QObject::tr("文件 %1 处理错误,是否继续检查其他文件?").arg(dirName));
                            openFileError.addButton(QMessageBox::Yes);
                            openFileError.addButton(QMessageBox::No);
                            openFileError.setDefaultButton(QMessageBox::Yes);
                            if (openFileError.exec() == QMessageBox::No)
                                return false;
                        }
    
                    }
                }
            }
            if (keyWordsPosition.size() >= 1){
                QString fileName = dirName.mid(lastSeparatorIndex+1);
                QString filePath = dirName.mid(0, lastSeparatorIndex+1);
                fileNameList << fileName;
                filePathList << filePath;
                keyWordsPositionList << keyWordsPosition;
    
                m_doc->dynamicCall("SaveAs(const QString)", saveAsFilePath);
            }
            delete pFind;
            pFind = NULL;
            delete pRange;
            pRange = NULL;
            m_doc->dynamicCall("Close(Boolean)", true);
            m_doc->dynamicCall("Quit()");
            delete m_doc;
            m_doc = NULL;
            return true;
         }
        return false;
    }

     

    好了,以上代码可能无法正常运行,因为缺少一些变量的定义、头文件的包含,我觉得这些你自己添加是完全OK的^-^。

     

    因为自己需要的时候找不到资源,如果你也在找相似的资料,能给你带来帮助,我的目的就达到了,哈哈

     

    我发现在网上下载Word VBA和Excel VBA帮助文档的时候需要金币什么的,很不方便。在此我还将Word VBA和Excel VBA帮助文档的百度网盘下载链接放在这里,供大家下载:

    链接: https://pan.baidu.com/s/1-KTGdEVz_4C3yp_SBNlkIw 提取码: ri4p

    有不足的地方,请指正。

     

    转载于:https://www.cnblogs.com/Amos-haoxh/p/10859357.html

    展开全文
  • 前言 grep 命令支持三种正则表达式语法:Basic、Extended 和 Perl-compatible 。当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式...使用 grep 命令基本正则表达式搜索多个匹配模式的语法如下:

    前言

    grep 命令支持三种正则表达式语法:Basic、Extended 和 Perl-compatible 。当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式。

    要搜索多个匹配模式,可以使用 OR ( alternation ) 运算符。我们可以用 OR 运算符 |( pipe )指定不同的匹配项,这些匹配项可以是文本字符串,也可以是表达式集。值得注意的是,在所有正则表达式运算符中,这个运算符的优先级是最低的。

    使用 grep 命令基本正则表达式搜索多个匹配模式的语法如下:

    $ grep 'pattern1\|pattern2' filename 

    这里需要注意的是,始终要用单引号将正则表达式括起来,因为单引号内的内容原样输出,被单引号括起的内容不管是常量还是变量不会发生替换。

    使用基本正则表达式时,元字符被解释为字面字符。要保留元字符的特殊含义,必须用反斜杠( \ )对它们进行转义。这就是为什么我们要转义 OR 运算符(|)。

    要将模式解释为扩展正则表达式,请调用 grep -E(或 --extended-regexp )选项。使用扩展正则表达式时,不需要对 OR 运算符 (|) 进行转义:

    $ grep -E 'pattern1|pattern2' file 

    1.Grep命令搜索多个字符串

    通常我们认为,文字字符串是最基本的模式。

    接下来我们将示例,搜索某用户日志错误文件中出现的所有 fatal、error 和 critical 字符串。语法如下:

    $ grep 'fatal\|error\|critical' /var/log/nginx/error.log 

    还需要注意的是,如果要搜索的字符串包含空格,需要用双引号将其括起来。

    下面是使用扩展正则表达式的同一个示例,它不需要转义字符:

    $ grep -E 'fatal|error|critical' /var/log/nginx/error.log 

    默认情况下,grep 命令是区分大小写的。要在搜索时忽略大小写,请调用 grep 加 -i (或 --ignore-case )选项,示例如下:

    $ grep -i 'fatal|error|critical' /var/log/nginx/error.log 

    当你只想搜索某个单词时,比如你想搜索的是单词 error ,grep 命令会输出所有包含 error 字符串的行,即它除了会输出包含 error 单词的行,还会输出包含 errorless 或 antiterrorists 等非 error 单词的行,这样是极不方便的。

    因此要仅返回指定字符串是整词的行,或者是由非单词字符括起来的行,可以使用 grep 加 -w (或 --word-regexp )选项:

    $ grep -w 'fatal|error|critical' /var/log/nginx/error.log 

    值得注意的是,单词字符包括有字母、数字字符(比如 a-z、a-Z 和 0-9 )以及下划线( _ ),所有其他字符都被视为非单词字符。

     

    2.grep同时匹配多个关键字或任意关键字

    2.1与操作

    grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

    grep word1 file.txt | grep word2 |grep word3

    必须同时满足三个条件(word1、word2和word3)才匹配。

     

    2.2 或操作

    grep匹配任意关键字

    grep -E 'str1|str2|str3' filename //找出文件(filename)中包含str1或者包含str2或者包含str3的行
    

    egrep实现

    egrep 'str1|str2|str3' filename //用egrep同样可以实现

    awk实现

    awk '/str1|str2/str3/' filename  //awk 的实现方式

    2.3其他操作

    grep -i pattern filename #不区分大小写地搜索。默认情况区分大小写。
    grep -l pattern filename #只列出匹配的文件名。
    grep -L pattern filename #列出不匹配的文件名。
    grep -w pattern filename #只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)。

     

     

     

    参考文章:

    1.grep同时匹配多个关键字或任意关键字

    2.grep多个关键字“与”和“或”

    3.grep 满足 或 排除多个关键字

    4.如何使用Grep命令查找多个字符串

     

     

     

     

     

     

     

     

    展开全文
  • PDF指定位置添加文字有两种情况,一是已知指定位置的坐标(可前台使用PDF.js计算得,本文暂时不介绍),二是使用工具类PDF上查找关键字来得知坐标,本次使用的itextpdf工具类能够达到这一效果。...
  • 关键字查找

    千次阅读 2017-11-28 10:56:00
    中文关键字查找(敏感词过滤)背景近来需要极短的时间来查找某一段文字是否出现关键字(敏感字)的应用。网上找了一些资料,有用java写的双数组AC树,达到每秒27Mb 的速度。用c写的ac树每秒也只有 30M。以下是我用多叉...
  • 技能get!如何使用PDF查找关键字

    千次阅读 2019-06-12 16:10:58
    PDF文件给人们带来了极大的方便,很时候当我们阅读和浏览PDF文档的时候,会觉得...那么如何PDF文件中快速查找关键字呢?这方法后悔没早点知道,下面就一起来看看吧。  具体步骤如下:  第一步,下载并且运...
  • 在多个Word文档中查找指定文件内容

    万次阅读 热门讨论 2016-08-09 13:20:41
    文件分捡工具,可以根据你的需要设置不同的关键词,如上图,只要搜索指定的关键词(以逗号分隔),就可以实现对一目录中的所有简历文件进行归类统计,统计每简历中文件出现的次数,并可以按关键词类别或者匹配的...
  • grep 同时满足多个关键字和满足任意关键字 1,grep -E "word1|word2|word3" file.txt 满足任意条件(word1、word2和word3之一)将匹配。 2,grep word1 file.txt | grep word2 |grep word3 必须同时满足三个...
  • 搜索word里包含的字;可以搜索某路径下的全部word文档,并可同时输入多个关键字,所搜结果写入到excel或txt中,excel附带文档的超链接。
  • WORD文档的关键字搜索

    千次阅读 2007-03-22 10:05:00
    网上找了很久,基本上对OFFICE编程都是用的OFFICE的OLE对象,但是关键字搜索这问题,感觉用OLE对象显得臃肿,而且不够灵活,于是便写直接读取文件内容进行搜索的办法。首先涉及的问题就是字符编码的问题。先是...
  • 【Linux】grep 匹配多个关键字

    万次阅读 2018-12-11 18:57:04
    一般情况下,grep 命令只能匹配一个关键字,怎么实现匹配多个关键字呢? 下面看几种情况: 1、 grep ‘字符串’ 这是最普通的使用方式: 匹配文件中包含 MANPATH 的那一行: cat manpath.config | grep 'MANPATH' 2...
  • 关键字查找Util

    2019-03-14 15:23:44
    此工具类主要用于:遍历指定文件夹下所有文件...应用场景:查找公司 指定目录下配置信息,查找xxx.js中什么方法 整个项目中 被调用的次数 Code: package com.tao.mapper; import java.io.File; import java...
  • C#操作word文档时,查找指定关键字Word._Application word = New Word.Application; Word._Document = word.Document.Open("file name"); Word.Selection selection = word.Selection; selection.Find.Text = ...
  • Linux文件查找和文件内容关键字查找

    千次阅读 2020-06-24 14:35:29
    -r开关,递归子目录, -E扩展模式,里面可以用|分隔多个关键字, or关系 grep -r -E ‘word1|word2|word3’ dir/ > gather.log 如果要and关系查找,则要用管道 grep pattern1 files| grep pattern2 :显示既匹配 ...
  • word内容关键字搜索

    千次阅读 2013-06-03 15:57:35
    我的电脑大约有几千个Word文档,分类比较,有点乱,再加上从根目录开始,有多层子目录,文档名字大多相似,很时候记不住文档的名字了,只是记得内容的个别词汇,于是我进入那个文件夹,开始用系统自带的关键字...
  • 可以搜索某路径下的文档,并可同时输入多个关键字,所搜结果写入到excel或txt中,excel附带文档的超链接。支持文件类型java、word、txt、mxml、as、xml。
  • 1、grep 同时满足多个关键字 grep -E "word1|word2|word3" file.txt 满足任意条件(word1、word2和word3之一)将匹配。 grep word1 file.txt | grep word2 |grep word3 必须同时满足三个条件(word1、word2和word3)...
  • VBA 关键字匹配查找

    千次阅读 2019-04-24 10:08:32
    '完成对表格单元格中关键字的匹配查找 'Debug.Print "~~~~~~~~~~~~~~~~~~~~~~~~" '变量声明 Dim column_num, row_num, File_sum, Sum_Workbook, search_file, _ temp_Workbook, sheet_num, key_word...
  • 功能说明:查找文件符合条件的字符串(同时能匹配正则表达式) 语法:grep [-abcEFGhHilLnqrsvVwxy][-A&lt;显示列数&gt;][-B&lt;显示列数&gt;][-C&lt;显示列数&gt;][-d&lt;进行动作&...
  • 通过ajax从后台读取词表,通过正则表达式将页面内将非标签的关键字高亮(主要是根据 "keyword这种关键字判断),之后每当页面Iframe内进行在关键字上mouseenter, 用ajax从后台查找相关内容,用一iframe展示,...
  • 可以搜索某路径下的文档,并可同时输入多个关键字,所搜结果写入到excel或txt中,excel附带文档的超链接。支持文件类型java、word、txt、mxml、as、xml、pdf。
  • 1. grep -E "word1|word2|word3" file.txt 满足任意条件(word1、word2和word3之一)将匹配。 2. grep word1 file.txt | grep word2 |grep word3... 必须同时满足三条件(word1、word2和word3)才匹配。 ...
  • 本快速教程中,将了解如何检测字符串中的多个单词。 我们的例子 我们假设我们有字符串: String inputString = "hello there, william"; 复制代码我们的任务是查找inputString 是否包含“hello”和“william”...
  • java中50个关键字

    千次阅读 2019-10-31 21:08:27
    关键字和保留字的区别 ...保留字是为java预留的关键字,他们虽然现在没有作为关键字,但以后的升级版本中有可能作为关键字。 识别java语言的关键字,不要和其他语言如c/c++的关键字混淆。...
  • 有同学反映,需要查找指定字符的前一字符。根据此需求,大家可用录制宏操作一下查找某字符的操作,然后得到一些基本代码,此基础上进行修改,得到具备相应功能的过程代码。最终代码如下: Sub findtext() Dim ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,264
精华内容 14,905
关键字:

如何在多个word里查找关键字