1

文字列で2つの置換を実行したいのですが、phpで正規表現を記述する方法を知っています。現在、c++ブーストに精通していません。

// Replace all doubled-up <BR> tags with <P> tags, and remove fonts.
    $string = preg_replace("/<br\/?>[ \r\n\s]*<br\/?>/i", "</p><p>", $string);
    $string = preg_replace("/<\/?font[^>]*>/i", "", $string);

C ++ Boostでコードを書く方法は?

前もって感謝します。

4

1 に答える 1

1

正規表現を使用したHTMLの解析に関する通常の警告がすべて適用されます。

#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main()
{
  boost::regex double_br("<br/?>[ \\r\\n\\s]*<br/?>", boost::regex::icase);
  boost::regex fonts("</?font[^>]*>", boost::regex::icase);

  std::string cases[] = {
    "foo<br><br>bar",
    "one<br/><br>two",
    "a<br>   <br/>b",
    "a<br><br>c<br/><br/>d",
    "<font attr=\"value\">w00t!</font>",
    "<font attr=\"value\">hello</font><font>bye</font>",
    ""
  };

  for (std::string *s = cases; *s != ""; ++s) {
    std::cout << *s << ":\n";

    std::string result;
    result = boost::regex_replace(*s, double_br, "</p><p>");
    result = boost::regex_replace(result, fonts, "");

    std::cout << "  - [" << result << "]\n";
  }

  return 0;
}

出力:

foo <br> <br> bar:
  -[foo </ p> <p> bar]
1つ<br/><br>2つ:
  -[1つ</p><p>2つ]
a <br> <br/> b:
  -[a </ p> <p> b]
a <br> <br> c <br/> <br/> d:
  -[a </ p> <p> c </ p> <p> d]
<font attr = "value"> w00t!</ font>:
  -[w00t!]
<fontattr ="value">こんにちは</font><font>さようなら</font>:
  - [こんにちはさようなら]
于 2012-05-01T14:47:30.627 に答える