[英]How to get a regular expression to match items with spaces
如果沒有空格字符,則以下正則表達式將起作用,但是如果輸入具有空格字符,則它將不起作用(看起來像是一個鏈接,但JavaScript不起作用)。
我該如何更改?
正則表達式對World
和The World
。
Dim makebkz As String
Dim pattern As String = "\(bkz: ([a-z0-9$&.öışçğü\s]+)\)"
Dim regex As New Regex(pattern, RegexOptions.IgnoreCase)
Dim myAnchor As New System.Web.UI.HtmlControls.HtmlAnchor()
Dim postbackRef As String = Page.GetPostBackEventReference(myAnchor, "$1")
myAnchor.HRef = postbackRef
str = regex.Replace(str, "(bkz: <a href=javascript:" & myAnchor.HRef & "><font color=""#CC0000"">$1</font></a> )")
makebkz = str
Return makebkz
實際上,有一個空格“字符”。 它是一個“ \\ s”(減去引號)。
我認為這一行應該更改:
str = regex.Replace(str, "(bkz: <a href=javascript:" & myAnchor.HRef & "><font color=""#CC0000"">$1</font></a> )")
如果我正確閱讀了您的代碼,則說明您將$ 1包含在HRef中(這就是Page.GetPostBackEventReference(myAnchor,“ $ 1”)所做的事情),然后將其替換為字體標簽和href之間的文本。輸出將是這樣的:
(bkz: <a href=javascript:__doPostBack(The World)><font color=""#CC0000"">The World</font></a> )
如果您將替換功能更新為此,它應該可以工作:
str = regex.Replace(str, "(bkz: <a href=""javascript:" & myAnchor.HRef & """><font color=""#CC0000"">$1</font></a> )")
即用引號將javascript調用包裝起來,您的世界會很好。
\\ s將匹配任何空格字符。 確保正確逃避此操作。
只是要清楚一點,您是說類似(bkz: world)
東西起作用,但是(bkz: the world)
卻不起作用?
您目前擁有的正則表達式匹配兩者(在使用RegexBuddy verfied),以及您的捕獲組應罰款(它應該抓住world
在第一種情況和the world
第二)。
在無法正常工作的情況下,調用“ Replace
后, str
中存儲的內容是什么? 我的猜測是您生成的字符串是問題所在,而不是正則表達式本身。
嘗試將空格字符設置為有條件的\\ s *意味着bkz:塊之間可以有0或很多空格。 您還可以使用\\ s嗎? 如果有0或1個空格。
Dim pattern As String = "\(bkz:\s*([a-z0-9$&.öışçğü\s]+)\)"
盡管由於第二個模式包含一個空格匹配,但是您可能必須擴展表達式以聲明帶括號的匹配中的第一個字符不是空格,此處是該示例。
Dim pattern As String = "\(bkz:\s*([a-z0-9$&.öışçğü][a-z0-9$&.öışçğü\s]+)\)"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.