RegEx匹配字符串

时间:2014-07-31 13:08:38

标签: c# regex

我正在使用c#工作和一个有趣的项目,现在我的 RegEx 有问题。我尝试了一些变形但没有找到解决方案。我想为此字符串"##Test1##" RegEx

所以我在这里试过这个RegEx:

[\#]{2}[a-zA-Z0-9]{1,}[\#]{2}

它的工作正常但我的问题是,
传递"###Test1###"时,RegEx会忽略内部#的第一个和最后一个"##Test1##"和匹配。

但我不想那样。

RegEx 只能与此字符串##Test1##匹配。

希望有些人可以帮我解决这个问题 问候,

3 个答案:

答案 0 :(得分:6)

如果正则表达式匹配您指定的字符串,这是您的正则表达式:

^##Test1##$

如果您希望它匹配"##(any digit or letter here)##"之类的字符串,那么这将起作用:

^##[a-zA-Z0-9]+##$

这将匹配

之类的字符串
##abc##
##123##

但不是

###xxx###     <-- 3 #'s

我认为你在这里寻找的主要部分是这两个符号:

+------------------- matches the beginning of the string
|                +-- matches the end of the string
v                v
^##[a-zA-Z0-9]+##$

这两个将确保你没有搜索字符串以查看你的模式是否存在于里面,但是你要检查字符串是否完全匹配模式。

答案 1 :(得分:0)

当单独站立时,这将匹配所需的字符串,如果它嵌入在更长的字符序列中,则匹配:

[^#]*##[a-zA-Z0-9]+##[^#]*

Hello##World##! -> matches=true
##World##       -> matches=true

Hello##World### -> matches=false
###World###     -> matches=false

答案 2 :(得分:0)

那么,因为它包含在内部,所以显然是正确的。怎么样&#34;排除&#34;像结尾/开始.^#*的字符,但是只有当你想要避免那个角色时才会有用......