Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何获取正则表达式以匹配带有空格的项_.net_Asp.net_Vb.net_Regex - Fatal编程技术网

.net 如何获取正则表达式以匹配带有空格的项

.net 如何获取正则表达式以匹配带有空格的项,.net,asp.net,vb.net,regex,.net,Asp.net,Vb.net,Regex,如果没有空格字符,下面的正则表达式可以工作,但是如果输入有空格字符,它就不能工作(看起来像是一个链接,但是JavaScript不能工作) 我怎样才能改变它 正则表达式应该同时适用于世界和世界 Dim makebkz As String Dim pattern As String = "\(bkz: ([a-z0-9$&.öışçğü\s]+)\)" Dim regex As New Regex(pattern, RegexOptions.IgnoreCase)

如果没有空格字符,下面的正则表达式可以工作,但是如果输入有空格字符,它就不能工作(看起来像是一个链接,但是JavaScript不能工作)

我怎样才能改变它

正则表达式应该同时适用于
世界
世界

    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
Dim makebkz作为字符串
Dim模式为String=“\(bkz:([a-z0-9$&.ö305şğğğs]+)\”
Dim regex作为新的regex(pattern,RegexOptions.IgnoreCase)
将myAnchor设置为新的System.Web.UI.HtmlControls.HtmlAnchor()
Dim postbackRef As String=Page.GetPostBackEventReference(myAnchor,“$1”)
myAnchor.HRef=postbackRef
str=regex.Replace(str,“(bkz:)”)
makebkz=str
返回makebkz

实际上,有一个空格“character”。它是一个“\s”(减去引号)。

实际上,有一个空格“character”。它是一个“\s”(减去引号)。

\s将匹配任何空白字符。请确保正确转义。

\s将匹配任何空白字符。请确保正确转义。

尝试将空格字符设置为有条件的\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]+)\)"

尝试将空格字符设置为有条件的\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]+)\)"

我想明确一点,你是说像
(bkz:world)
这样的东西是有效的,但是
(bkz:world)
是无效的吗

您当前拥有的正则表达式将与两者匹配(在RegexBuddy中验证),并且您的捕获组应该很好(在第一种情况下,它应该捕获
world
,在第二种情况下,它应该捕获
world


在调用
Replace
后,如果事情不起作用,
str
中存储了什么?我的猜测是,您正在生成的字符串是问题所在,而不是正则表达式本身。

只是想澄清一下,您是说像
(bkz:world)
这样的东西可以工作,但是
(bkz:world)
不能工作

您当前拥有的正则表达式将与两者匹配(在RegexBuddy中验证),并且您的捕获组应该很好(在第一种情况下,它应该捕获
world
,在第二种情况下,它应该捕获
world


在调用
Replace
后,如果事情不起作用,
str
中存储了什么?我猜您正在生成的字符串是问题所在,而不是正则表达式本身。

我认为这一行应该更改:

str = regex.Replace(str, "(bkz: <a href=javascript:" & myAnchor.HRef & "><font color=""#CC0000"">$1</font></a> )")
str=regex.Replace(str,“(bkz:)”)
如果我正确阅读了您的代码,您将在HRef中包含$1(这就是Page.GetPostBackEventReference(myAnchor,“$1”)所做的),然后在字体标记和HRef之间的文本中替换它,因此您的输出类似于:

(bkz: <a href=javascript:__doPostBack(The World)><font color=""#CC0000"">The World</font></a> )
(bkz:)
如果将replace函数更新为该函数,它应该可以工作:

str = regex.Replace(str, "(bkz: <a href=""javascript:" & myAnchor.HRef & """><font color=""#CC0000"">$1</font></a> )")
str=regex.Replace(str,“(bkz:)”)

也就是说,把javascript调用用引号括起来,你的世界就会好起来。

我认为这一行应该改变:

str = regex.Replace(str, "(bkz: <a href=javascript:" & myAnchor.HRef & "><font color=""#CC0000"">$1</font></a> )")
str=regex.Replace(str,“(bkz:)”)
如果我正确阅读了您的代码,您将在HRef中包含$1(这就是Page.GetPostBackEventReference(myAnchor,“$1”)所做的),然后在字体标记和HRef之间的文本中替换它,因此您的输出类似于:

(bkz: <a href=javascript:__doPostBack(The World)><font color=""#CC0000"">The World</font></a> )
(bkz:)
如果将replace函数更新为该函数,它应该可以工作:

str = regex.Replace(str, "(bkz: <a href=""javascript:" & myAnchor.HRef & """><font color=""#CC0000"">$1</font></a> )")
str=regex.Replace(str,“(bkz:)”)

也就是说,将javascript调用用引号括起来,你的世界就会好起来。

你说的是“它不会重定向”-你的意思是返回的链接(makebkz)在页面上不起作用吗?或者你的意思是当str是“世界”时正则表达式不执行替换?返回的是什么?我认为您必须澄清正则表达式所匹配的输入的一些细节。我尝试输入“(bkz:World)”和“(bkz:The World)”,并能够在这两个方面与您的代码进行匹配。有些人在遇到问题时会认为“我知道,我将使用正则表达式”。现在他们有两个问题。您说的是“它不会重定向”-您的意思是返回的链接(makebkz)在页面上不起作用吗?或者你的意思是当str是“世界”时正则表达式不执行替换?返回的是什么?我认为您必须澄清正则表达式所匹配的输入的一些细节。我尝试了输入“(bkz:World)”和“(bkz:The World)”,并能够与您的代码进行匹配。有些人在遇到问题时会认为“我知道,我将使用正则表达式”。现在他们有两个问题。谢谢Zhaph,您的解决方案成功了。它不依赖正则表达式。谢谢everybodyThanks Zhaph,你的解决方案成功了。它不依赖于正则表达式。谢谢大家