3

データベースからのデータの文字列があります

[context]=[context desc].[context level].&[data]

このようなデータ部分を見つけるために書かれた正規表現があります

(.* [.&;^])(?:[^*])([^]]+)

これは 3 つのグループを返しますが、最後のグループだけが必要です。最後のグループだけを取得するにはどうすればよいですか?

編集

申し訳ありませんが、私の出力は次の(re-seq #"(.*[.&;^])(?:[^*])([^]]+)" line)とおりです。

(["[context]=[context desc].[context level].&[data" "[context]=[context desc].[context level].&" "data"])

私が欲しいのは[「データ」]だけです

4

3 に答える 3

0

たぶん、より単純な正規表現を試してください:

(def s "[context]=[context desc].[context level].&[data]")

user> (re-find #"\.&(.+)" s)
[".&[data]" "[data]"]

user> (last (re-find #"\.&(.+)" s))
"[data]"
于 2013-07-08T14:06:40.057 に答える
0
(.* [.&;^])(?:[^*])([^]]+)$

$ を使用して、正規表現に一致する文字列の末尾を示します。

編集一致する文字列の完全な例を提供していないため、最後に一致したグループの直後に文字列の末尾が表示されない可能性があります。その場合、否定的な先読みを使用する必要があります。 $ の前に、キャプチャ可能なデータがないことを確認してください。

于 2013-07-08T13:53:27.683 に答える