1

この質問は別の方法で尋ねられた可能性があります。その場合は、私に指摘してください。検索結果から見つからなかっただけです。

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

  1. 例えば。* some string箇条書き
  2. 例えば。*some string*イタリックテキストの場合
  3. 例えば。&some string&URLの場合
  4. 例えば。&some string&specific url&文字列とは異なるURLの場合

文字列を処理して特別なマークアップシーケンスを見つけるには、次の2つの方法が考えられます。

a。文字中心の方法で進めることができます。つまり、文字列を解析してシーケンス1、2などを探します。ただし、文字列を複数回解析する必要があるため、非効率的です。

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

これを行うための最良の方法は何ですか?正規表現はどうですか?パターンaまたはbに従いますか?3番目のオプションはありますか?

PS私はPythonを使用しています。Pythonの例が最も高く評価されています。

4

2 に答える 2

1

基本的に、字句解析プログラムまたは「レクサー」を実装しようとしています。'lexer'、'parser'、'markup'を検索して、さらに読み物を探すことができます。[編集:「レクサー」ではなく「パーサー」を意味する場合があります。レクサーはパーサーの一部です。]

パーサーは通常、ソリューションの一部として正規表現を使用して実装されますが、それだけではありません。

特にMarkdownに対してこれを行っている場合、既存のMarkdownパーサー/レクサーを使用したくないですか?非常に高速で十分にテストされたMarkdownパーサーがすでに存在します。


補足:独自のマークアップ構文を使用しないようにしてください。すでに数十のプレーンテキストマークアップ言語があります。好きなものを選んで使ってください。ウィキペディアのフォーマット、マークダウンなどが思い浮かびます。これらを解析するための既製のツールがあります。

于 2012-04-22T19:57:17.890 に答える
-1

もちろん正規表現!それでもまだそうしていない場合は、それを学びましょう。あなたが終わった後、あなたはそれなしであなたがどのようにうまくやってきたか想像するのが難しいでしょう。表示するサンプルは、正規表現を使用した単純なものです。たとえば、アスタリスク、スペース、単語の順に次のように表されます。

\*\s\w+

正規表現以外は何もありません。

于 2012-04-22T17:43:31.693 に答える