0

次の例からすべての変数値のリストを取得しようとしています。

JobName :: Variable1 = 1 | Variable2 = 2 | Variable3 = 3

上記の変数から値 1 2 および 3 を返す方法を教えてください

私は次の作業をしようとしていますが、これまでのところかなり成功していません! 正規表現で OR 記号と AND 記号を正しく使用する方法がわかりません。

(<?<=\s*=\s*).+ | \n

基本的に、正規表現は EQUAL 記号の後に来るものと一致し、PIPE または END OF THE LINE まで一致し続ける必要があります。

もう一つの例:

JobName :: Variable1 = 123456 234567 | Variable2 = asdf q s | Variable3 = as123!@#/*()

正規表現は次を返します: 123456 234567 , asdf qs , as123!@#/*()

注意: BETWEEN [= and |] OR [= and \n] を返す必要があるだけです。

4

3 に答える 3

1

.netについてはわかりませんが、これをrubyで試し、完璧に機能しました。

=\s([^\|]*)\s?\|?

3つの変数をキャプチャします(さらにある場合はそれ以上)

于 2012-12-28T01:06:13.953 に答える
1
        string a = "JobName :: Variable1 = 123456 234567 | Variable2 = asdf q s | Variable3 = as123!@#/*()";

        MatchCollection mc = Regex.Matches(a, "Variable.+?=(.+?)([|]|$)");
        foreach (Match item in mc)
        {
            string res = item.Result("$1");
        }

または、「変数」をスキップ"=(.+?)([|]|$)"してパターンとして使用することもできます

于 2012-12-28T01:06:41.673 に答える
0

これは、必要に応じて変数/値を抽出する非常に簡単なソリューションです。

(?<variable>[^| :=\r\n]+)\s*=(?<value>[^|\r\n]+)

デモ+説明: http://regex101.com/r/mC8jR2

于 2012-12-28T01:09:37.733 に答える