以下是我处理文档文件后得到的string ...
$$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之间的$$和$$.I不知道如何在一个有效的方式做这件事...我想要一些Regular Expression解决方案来解决这个问题。我对Regular Expression的知识很少,所以请大家帮助我在this...any有效的解决方案除了正则表达式也将提前do...thanks ...
发布于 2012-11-02 22:28:23
Here are some regex basics, worth reading up on.
就您的具体问题而言:
foreach(Match match in Regex.Matches(input, @"\$\$(.*?)\$\$"))
{
string textValue = match.Groups[1].Value;
// process the text value
}正则表达式匹配两个文字$,然后任意多个非换行符(只要有必要)就可以得到另外两个$。由于匹配不能重叠,因此从结束$$到开始$$不存在获得额外匹配的危险。
通常推荐的更有效的正则表达式是:
@"\$\$((?!\$\$).)*\$\$"它基本上做了同样的事情,只是正则表达式的内部有一点不同(看看“lookahead”)。
实际上,如果您可以保证文本值始终只包含字母、数字、下划线和连字符,则可以使用:
@"\$\$([\w-]+)\$\$"不仅如此,对于所有三种情况,一些人更喜欢用\${2}替换\$\$,但我个人认为对于两次重复,这有点不必要。
发布于 2012-11-02 22:28:28
我认为\$\$([A-Z0-9\_\-]+?)\$\$应该承担这个责任。
您可能希望检查它允许多行解析的额外参数。
有关正则表达式的更多详细信息,请查看this link
发布于 2012-11-02 22:37:26
实际上不需要正则表达式。您的文本很容易被String.Split拆分。
var parts = str.Split(new string[] {"$$"}, StringSplitOptions.RemoveEmptyEntries);https://stackoverflow.com/questions/13197133
复制相似问题