需要修复我的正则表达式

时间:2014-08-23 10:09:44

标签: c# sql regex

我正在尝试将字符串与regex模式匹配,但存在一些问题。

我的字符串只能有3种形式正确:

  1. [DBO]。[开始]
  2. dbo.Start
  3. 开始
  4. 这是我的正则表达式:

    "^((\[)?dbo(\])?)?(\.)?(\[)?Start(\])?$"
    

    所有3个表单都会返回成功,但还有其他一些选项,例如:[dboStartdbo[Start

    我知道这是因为它是可选的,但是在制作可选项时如何制作依赖项,以便如果一个可选项具有值,则第二个可选项也必须具有值。

    你可以帮我解决这个问题吗?

    感谢。

3 个答案:

答案 0 :(得分:1)

两个想法:

1。)替代模式

^(?:\[dbo\]\.\[Start\]|(?:dbo\.)?Start)$

test at regex101


2.。)如果支持conditionals

^(?:(\[)?dbo(?(1)\])\.)?(?(1)\[)Start(?(1)\])$

这里第一个开放[被捕获在第一个捕获组中。其他[]取决于$1的匹配。

test at regex101

答案 1 :(得分:0)

试试这个:

 string str = dt.Rows[0]["str"].ToString();
             //here dt.Rows[0]["str"].ToString();   is the datatable value for a particular row                

 str = Regex.Replace(str, @"[[]", String.Empty);
 str = Regex.Replace(str, @"[]]", String.Empty);
 str = Regex.Replace(str, @"[.]", String.Empty);
 string result = str;

希望这可以帮到你!

答案 2 :(得分:0)

另一种解决方案

/(.*?(?<=^|\.)\[?Start\]?)/g

Demo