我正在使用c#工作和一个有趣的项目,现在我的 RegEx 有问题。我尝试了一些变形但没有找到解决方案。我想为此字符串"##Test1##"
RegEx 。
所以我在这里试过这个RegEx:
[\#]{2}[a-zA-Z0-9]{1,}[\#]{2}
它的工作正常但我的问题是,
传递"###Test1###"
时,RegEx会忽略内部#
的第一个和最后一个"##Test1##"
和匹配。
但我不想那样。
RegEx 只能与此字符串##Test1##
匹配。
希望有些人可以帮我解决这个问题 问候,
答案 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;像结尾/开始.^#*
的字符,但是只有当你想要避免那个角色时才会有用......