【问题标题】:Searching text with 'Match case' and 'Match whole word' in file in C++ or Java在 C++ 或 Java 的文件中使用“匹配大小写”和“匹配整个单词”搜索文本
【发布时间】:2010-11-12 06:13:43
【问题描述】:

我需要 C++ 或 Java 的解决方案。有标准函数吗?

【问题讨论】:

    标签: java c++ search text


    【解决方案1】:

    在java中: http://java.sun.com/docs/books/tutorial/essential/regex/bounds.html

    您可以使用“\b”字边界。

    P.S.:当你编译它时,请记住 scape 斜线: 例如:找到“狗”这个词 --> Pattern p = Pattern.compile("\bdog\b");

    【讨论】:

      【解决方案2】:

      在 C++ 中,您可以在

      中使用正则表达式
      std::tr1::regex 
      

      如果您的编译器是最新的。正则表达式默认支持大小写匹配。使用 \b 单词边界,您应该只能找到整个单词。

      【讨论】:

      • 请注意,编译器不需要支持 TR1。如果不这样做,编译器可能是“最新的”。
      • 你写“可能”是对的。在许多情况下,较旧的编译器没有安装 TR1 实现。
      【解决方案3】:

      没有一个函数可以做到这一点。对于简单的情况,这仍然相当简单:在内存中获取文件(例如std::vector<char> buff(file_begin_iter, file_end_iter);),然后找到你想要的。 (std::search)

      【讨论】:

        【解决方案4】:

        对于 Java,请参阅 Pattern。您可以使用\b\B 来匹配单词边界。可以使用 CASE_INSENSITIVE 标志启用/禁用区分大小写。

        【讨论】:

          【解决方案5】:

          在 C++ 中没有标准的函数可以做到这一点——你需要自己动手。这种明显的缺乏是因为大写和小写的概念,实际上是单词的概念,比最初看起来要复杂得多。最好的办法是使用正则表达式库,例如 Boost 附带的库。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-08-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-05-11
            • 1970-01-01
            • 2011-02-13
            • 2019-01-18
            相关资源
            最近更新 更多