正则表达式允许禁用字符串 - 任何人都可以提供建议吗?

时间:2013-11-25 13:37:46

标签: c# regex

我想测试字符串是否与多种模式中的一种完全匹配。

我想我可以用

做到这一点
myRegex.IsMatch(testString) && myregex.Match.ToString()==testString 

但这可以在正则表达式模式中完成吗?

我想测试testString与DOCEMAIL完全匹配,或HTML::sometexthereCSV::sometexthere。 例如,它必须与DOC::sometexthere匹配 - 应该是'失败'

我当前的正则表达式模式为^(DOC|EMAIL)|((CSV|HTML)::.+),但允许禁用字符串,例如DOC::sometexthere

TIA

2 个答案:

答案 0 :(得分:1)

以下正则表达式应该完全符合您的要求:((DOC|EMAIL)|((HTML|CSV)::.*))

在以下字符串上进行了测试:

  • DOC - 匹配
  • 电子邮件 - 匹配
  • EMAIL :: someTextHere - no match
  • DOC :: someTextHere - no match
  • HTML :: SomeTextHere - match
  • CSV :: someTextHere - match

<强>更新 把它改成这个,它应该完全满足你的需求。

((DOC|EMAIL)$|((HTML|CSV)::.+))

添加了$所以它不会'捕获DOC中的DOC :: sometext将*更改为+所以它应该至少包含::

后面的一个字符

答案 1 :(得分:0)

您的模式是正确的,但您必须添加'字符串结尾'锚点$

 ^((DOC|EMAIL)|((CSV|HTML)::.+))$

请注意,我在括号内包含了两种可能性。