0

以下はstring、Docファイルを処理した後に得られるものです....

$$JHFIRMPHONE-91$$
$$SYSDATE-4$$
Dear  $$RCSALUTATION-5$$,
$$PAPTRANSMITTHANKS-34$$$$IPOWERPACKAGE-56$$$$CASHCARDLOADED-57$$$$CASHCARDTYPE-58$$$$ACTIVATE-59$$$$REFUNDBALANCEDUE-63$$$$FLEXPAY-68$$$$FLEXPAYCONT-67$$
$$REFBALDU$$$$EEXT-73$$
$$RALCASHCARD-64$$
$$ACRCASHCARD-65$$
$$CHECKMONEYCREDITCARD-61$$
$$NOPAYFULL-62$$
$$RAFMEMO-38$$$$RAFMEMOPT2-44$$
$$AMENDED-24$$
$$FORMSSCHEDULES-11$$
$$FORMS_LIST$$
$$FDHANDWRITTENATTACHMENTS-35$$
$$FDATTACHMENTS-26$$
$$FURNISHEDCOPIESKEEP-69$$
$$ESORDEATH-36$$
$$GOLDGUARANTEE-20$$
$$BASICGUARANTEE1-76$$$$BASICGUARANTEE2-77$$$$BASICGUARANTEE3-78$$
$$STONLYOPC-37$$
$$STATE-14$$
$$ST_DATA$$
$$STHANDWRITTENATTACHMENTS-29$$
$$STATTACHMENTS-27$$
$$TAXCOURSE-72$$
$$REWARDTYPE-82$$$$REWARDTYPE2-83$$$$REWARDTYPE3-84$$$$HEALTHBENEFITS-92$$$$HEALTHBENEFITS2-93$$$$HEALTHBENEFITS3-94$$$$HEALTHBENEFITS4-95$$$$HEALTHBENEFITS5-96$$
$$SINCERELY-40$$
$$CLOSING-16$$
$$JHTAXSERVICE-17$$
$$RAFSTARMEMO-45$$
$$RAFSTARMEMO2-97$$

私が欲しいのは、 と の間text valuesのすべてを取得する必要があることです。効率的な方法でこれを行う方法がわかりません...この問題を解決するための解決策が必要です。私は知識がほとんどないので、助けてください私はこれで...正規表現以外の効率的なソリューションも行います...事前に感謝します...$$$$Regular ExpressionRegular Expression

4

3 に答える 3

4

以下に、読む価値のある正規表現の基本をいくつか示します。

あなたの特定の問題に関する限り:

foreach(Match match in Regex.Matches(input, @"\$\$(.*?)\$\$"))
{
    string textValue = match.Groups[1].Value;
    // process the text value
}

正規表現は、2 つのリテラル$に一致し、さらに 2 つの$. $$マッチが重複できないため、エンディングから始まりまで余分なマッチが発生する危険はありません$$

もう少し効率的で通常推奨される正規表現は次のようになります。

@"\$\$((?!\$\$).)*\$\$"

基本的には同じことを行いますが、正規表現の内部が少し異なるだけです (「先読み」を調べてください)。

実際、テキスト値に常に文字、数字、アンダースコア、ハイフンのみが含まれることを保証できる場合は、次を使用できます。

@"\$\$([\w-]+)\$\$"

\$\$また、3 つのケースすべてについて、 に置き換えることを好む人も\${2}いますが、個人的には 2 回の繰り返しには少し不要だと思います。

于 2012-11-02T14:28:23.407 に答える
1

\$\$([A-Z0-9\_\-]+?)\$\$負荷をカバーする必要があると思います。

複数行の解析を可能にする追加のパラメーターを確認することをお勧めします。

正規表現の詳細については、このリンクを参照してください。

于 2012-11-02T14:28:27.537 に答える
1

実際、正規表現は必要ありません。あなたのテキストは で簡単に分割できますString.Split

var parts = str.Split(new string[] {"$$"}, StringSplitOptions.RemoveEmptyEntries);
于 2012-11-02T14:37:26.047 に答える