0

メッセージが次の構造を持つメッセージ パッシング システムを構築します。

message type;message content

(一致するmessage type;)

ただし、ユーザーはメッセージ タイプを設定できます。(疎結合システムのために);メッセージ タイプの一部として を使用できるようにしたいと考えています。これを行うには、メッセージ コンストラクターに次のようにエスケープさせます\

tl\;dr;Too long; didn't read content

(一致するtl\;dr;)

;ではない最初のコンテンツまで正規表現を一致させるにはどうすればよい\;ですか? 例では、それはそのtl\;dr;部分のみです。;メッセージ コンテンツ内にエスケープされていない がある場合があることに注意してください。

を試し^.*;ましたが、メッセージ内のセミコロンまでのすべてのコンテンツに一致します (例: tl\;dr;Too long;)

4

3 に答える 3

1

どの言語を探しているのかわかりませんが、Python バージョンの正規表現は次のとおりです。

^(\\.|[^;])*(?=;)

実際には:

In [28]: re.search(r'^(\\.|[^;])*(?=;)', r'message type;message content').group(0)
Out[28]: 'message type'

In [37]: re.search(r'^(\\.|[^;])*(?=;)', r"tl\;dr;Too long; didn't read content").group(0)
Out[37]: 'tl\\;dr'
于 2013-05-15T01:18:55.570 に答える