("/gallery/static/newest/\d*/desc/\d*/nosets/19/")
我可以在RegEx模式中使用变量吗?
工程....
("/gallery/static/newest/\d*/desc/\d*/nosets/" & strAge & "/")
不起作用....
我怎样才能让我的正则表达式模式具有可变的工作?或者我不能?
("/gallery/static/newest/\d*/desc/\d*/nosets/19/")
我可以在RegEx模式中使用变量吗?
工程....
("/gallery/static/newest/\d*/desc/\d*/nosets/" & strAge & "/")
不起作用....
我怎样才能让我的正则表达式模式具有可变的工作?或者我不能?
正如Karl Kieninger所说,似乎有可能在strAge中有额外的字符。你可以删除这些。在SLN的想法发展,你可以改变,
s到|
一度你有一个干净的字符串:
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim textToCheck As String = "/gallery/static/newest/123/desc/456/nosets/20/"
Dim strAge As String = "18,19,20,21"
' remove any unwanted chars and change the ","s to "|"s.
strAge = Regex.Replace(strAge, "[^0-9,]", "").Replace(","c, "|"c)
Dim pattern As String = "/gallery/static/newest/\d*/desc/\d*/nosets/(?:" & strAge & ")/"
Console.WriteLine(pattern)
Console.WriteLine(textToCheck & " " & Regex.IsMatch(textToCheck, pattern).ToString)
Console.ReadLine()
End Sub
End Module
输出:
/gallery/static/newest/\d*/desc/\d*/nosets/(?:18|19|20|21)/
/gallery/static/newest/123/desc/456/nosets/20/ True
另外,你真的是\d*
(零以上发生)还是会\d+
(一个或更多发生)会更好?
我使用\ d *,因为数字可能是10或97395.它们是随机数字。另外,strAge可以是20,没有额外的字符,但它仍然不起作用。只有当我硬编码它。我已经使用strAge作为18,19,20,因为这就是url想要它被格式化的样子。如果我硬编码它的作品。但作为一个变量,它不会。感谢您的解决方案。 – user3316318
@ user3316318看起来'\ d +'在这种情况下最好使用,因为'\ d *'表示它也可以匹配* no *数字。你是说你想让URL包含逗号,还是逗号分隔可能匹配的不同号码? –
你应该可以做到这一点。 在这个例子中,你确定strAge是“19”的字符串吗?你能调试打印连接的字符串吗?或者使用中间变量并逐步调试。 –
如果'''strAge'''的值不能保证是一个简单的数字,请记住转义输入,参见[RegEx.Escape](http://msdn.microsoft.com/zh-cn/library/system。 text.regularexpressions.regex.escape(v = vs.110).aspx) –
是的,我测试了它,并没有奏效。我希望有其他的选择。根据我的经验,你无法分解一个模式与变量。 – user3316318