需要修复我的正则表达式
Posted
技术标签:
【中文标题】需要修复我的正则表达式【英文标题】:Need to fix my regex 【发布时间】:2014-10-17 02:55:13 【问题描述】:我正在尝试将字符串与regex
模式匹配,但遇到了一些问题。
我的字符串可能只有 3 种正确的形式:
-
[dbo].[开始]
dbo.Start
开始
这是我的正则表达式:
"^((\[)?dbo(\])?)?(\.)?(\[)?Start(\])?$"
所有 3 种形式都返回成功,但还有更多选项,例如:[dboStart
或 dbo[Start
我知道这是因为它是可选的,但是我如何在设置可选时创建依赖关系,这样如果一个可选有值,那么第二个可选也必须有一个值。
你能帮我解决这个问题吗?
谢谢。
【问题讨论】:
也许这个regex101.com/r/vX0gC7/1 @hex494D49 不,这与 3 种形式相匹配。 @hex494D49 我编辑了我的问题。我可以得到任何字符串。但只有我指定的 3 个值是正确的。任何其他字符串都会返回 false。 【参考方案1】:两个想法:
1.) 替代模式
^(?:\[dbo\]\.\[Start\]|(?:dbo\.)?Start)$
test at regex101
2.) 如果支持conditionals:
^(?:(\[)?dbo(?(1)\])\.)?(?(1)\[)Start(?(1)\])$
这里第一个开场[
在第一个捕获组中被捕获。其他 []
取决于 $1
的匹配。
test at regex101.
【讨论】:
【参考方案2】:试试这个:
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;
希望对您有所帮助!
【讨论】:
【参考方案3】:另一种解决方案
/(.*?(?<=^|\.)\[?Start\]?)/g
Demo
【讨论】:
以上是关于需要修复我的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章