首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于获取"$$“之间的字符串值的正则表达式

用于获取"$$“之间的字符串值的正则表达式
EN

Stack Overflow用户
提问于 2012-11-02 22:24:14
回答 3查看 458关注 0票数 0

以下是我处理文档文件后得到的string ...

代码语言:javascript
复制
$$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 ...

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-02 22:28:23

Here are some regex basics, worth reading up on.

就您的具体问题而言:

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

正则表达式匹配两个文字$,然后任意多个非换行符(只要有必要)就可以得到另外两个$。由于匹配不能重叠,因此从结束$$到开始$$不存在获得额外匹配的危险。

通常推荐的更有效的正则表达式是:

代码语言:javascript
复制
@"\$\$((?!\$\$).)*\$\$"

它基本上做了同样的事情,只是正则表达式的内部有一点不同(看看“lookahead”)。

实际上,如果您可以保证文本值始终只包含字母、数字、下划线和连字符,则可以使用:

代码语言:javascript
复制
@"\$\$([\w-]+)\$\$"

不仅如此,对于所有三种情况,一些人更喜欢用\${2}替换\$\$,但我个人认为对于两次重复,这有点不必要。

票数 4
EN

Stack Overflow用户

发布于 2012-11-02 22:28:28

我认为\$\$([A-Z0-9\_\-]+?)\$\$应该承担这个责任。

您可能希望检查它允许多行解析的额外参数。

有关正则表达式的更多详细信息,请查看this link

票数 1
EN

Stack Overflow用户

发布于 2012-11-02 22:37:26

实际上不需要正则表达式。您的文本很容易被String.Split拆分。

代码语言:javascript
复制
var parts = str.Split(new string[] {"$$"}, StringSplitOptions.RemoveEmptyEntries);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13197133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档