("/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