0

私は次のようなテキストのチャンクを持っています:

名前=ロングジョンシルバー;職業=料理;趣味=海賊行為

そして、Boost :: regexライブラリを使用して、各属性の値を取得しようとしているので、Nameには次の正規表現があります。

regex(".*Name=([^;$]*).*")

私はそれを「Name=の後、;または行末が見つかるまですべてを取得する」と理解しています。しかし、私が使用して取得してregex_matchいるのは「長い」だけで、スペースはありません。もちろん、私はいくつかのREの組み合わせを試してきましたが、うまくいくことができません。

どんな手掛かり?乾杯。

4

1 に答える 1

0

いいえ、文字クラス(角括弧)内で$は、特別な意味はありません。単にリテラルと一致し'$'ます。

この正規表現を試してください:

Name=([^\s;]*)

文字クラスは、空白文字とセミコロンを除く[^\s;]すべての文字に一致します。これで、名前が最初のマッチグループ内にキャプチャされます。

編集:

また、「Long John Silver」という名前全体を一致させたい場合は、次の正規表現を使用してください。

Name=([^;]*)
于 2009-10-12T10:45:49.980 に答える