0

文字列の例

This is an important example about regex for my work.

このスニペットを使用して、正規表現に関する重要な例を抽出できます。参照(?<=an).*?(?=for)

しかし、私は右から左に文字列に抽出したいと思います。この質問の例によると、最初の位置は(のために)でなければなりません2番目の位置は(an)でなければなりません。

つまり、抽出プロセスは逆の方法で機能します。

他の場合は以下のコードでやりたいことを試しましたが、うまくいきません。

public string FnExtractString(string _QsString, string _QsStart, string _QsEnd, string _QsWay = "LR")
        {
            if (_QsWay == "LR")
                return Regex.Match(_QsString, @"(?<=" + _QsStart + ").*?(?=" + _QsEnd + ")").Value;
            else if (_QsWay == "RL")
                return Regex.Match(_QsString, @"(?=" + _QsStart + ").*?(<=" + _QsEnd + ")").Value;
            else
                return _QsString;
        }

前もって感謝します。

編集

以下の私の実際の例

#Var|First String|ID_303#Var|Second String|ID_304#Var|Third String|DI_t55

メソッドに2つの文字列(たとえば、「|ID_304」と「#Var|」 )を渡すと、 「Second String」を抽出したいのですが、この例は実際の文字列の平和ではなく、文字列は変更可能です。

4

2 に答える 2

0

前方または後方の先読みは必要ありません!あなたはただ:

(.*)\san\s.*\sfor\s

空白が必要なため、import * an*t\sと一致しません。an

于 2013-03-05T11:55:54.270 に答える
0

Regex.Escape現在のソリューションの潜在的な問題の 1 つは、渡された文字列に連結前にエスケープする必要がある特殊文字が含まれていることです。

return Regex.Match(_QsString, @"(?<=" + Regex.Escape(_QsStart) + ").*?(?=" + Regex.Escape(_QsEnd) + ")").Value;

マッチングの他の要件については、要件がRLわかりません。

于 2013-03-05T12:28:19.167 に答える