2012-04-22 6 views
1

この質問は別の方法で聞かれたかもしれませんが、もし私に指摘してください。私は検索結果の中でそれを見つけることができませんでした。文字列内のマークアップをトレースする最も効率的な方法は何ですか?

私はここのようなマークアップのテキストを解析したいと思います。

  1. たとえば、銃弾リストのための* some string
  2. 例えば、斜体の場合は*some string*
  3. たとえば、 URLの場合&some string&
  4. 例: &some string&specific url&などの文字列

私は特別なマークアップシーケンスを見つけるために、文字列を処理について移動する二つの方法を考えることができます異なるURLについて:

私は文字中心の方法、すなわちシーケンス1、2を探している文字列を解析することができます。しかし、文字列を複数回解析する必要があるため、効率が悪いようです。

b。文字ごとに文字列を処理し、特殊文字とその位置を記憶しておく方がよいでしょう。メモリが上記のような特殊シーケンスと一致する場合、特殊文字は文字列のHTMLに置き換えられます。私はそれが良いアイデアかどうかは確かではありませんし、どうやってそれを実装すべきかについては確信していません。

これについてはどのような方法が最適ですか?正規表現はどうですか?それはパターンまたはbに従っていますか? 3番目の選択肢はありますか?

P.S.私はPythonを使用しています。 Pythonの例で最も感謝しています。

+0

私は正規表現がおそらく最も簡単な方法だと思います。最も効率的ではありませんが、数百キロバイトの文書を処理しない限り、おそらく問題はありません。 – Ryan

+0

本当にやりたいですか? – PeeHaa

+0

@minitech:マークアップ付きのドキュメントを保存したいのですが、遅延が発生することなくHTML翻訳をロードできるようにしたいと考えています。ページはそれほど大きくならないはずです(ただし、そのサイズはエンドユーザーによって異なります)。 – Benjamin

答えて

1

あなたは基本的に字句アナライザまたは「レクサー」を実装しようとしています。あなたは、 'lexer'、 'parser'、 'markup'をさらに読むために検索することができます。 [編集:私は "パーサー"、 "レクサー"を意味することがあります。レクサーは、パーサの一部である。]

パーサは、一般的にソリューションの一部として正規表現を使用して実装されますが、それよりも、それにもう少しがあります。

Markdownのためにこれを具体的に行っているのであれば、使用しないことを確かめてください。existing Markdown parser/lexer?非常に高速で、十分にテストされたMarkdownパーサーが既に存在します。


サイドノート:独自のマークアップ構文を使わないようにしてください。プレインテキストマークアップ言語は既に数多くあります。好きなものを選んで使ってください。 Wikipediaの書式設定、Markdownなどが気になります。これらを解析するための既製のツールがあります。

+0

+1、このリンクhttp://en.wikipedia.org/wiki/Lightweight_markup_languageをチェックし、最も近いものを選択します。 – Juha

-1

正規表現はもちろんです!それでもやっていないなら、それを学んでください。あなたが終わったら、あなたはそれなしでどうやって一緒になったのか想像するのは難しいでしょう。表示するサンプルは、正規表現で単純です。

\*\s\w+

何もなく、正規表現:たとえば、アスタリスクは、その後、その後、スペースが単語は次のように表現されます。

+0

私はREを使用しましたが、検索と置換では決して使用されませんでした。私はあなたの提案を試みます。ありがとう。 – Benjamin

関連する問題