Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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
Regex 用于获取URL Excel VB的域的正则表达式_Regex_Excel_Vba - Fatal编程技术网

Regex 用于获取URL Excel VB的域的正则表达式

Regex 用于获取URL Excel VB的域的正则表达式,regex,excel,vba,Regex,Excel,Vba,我有一个excel文件,URL类型为 我想去 有人知道我应该用的正则表达式吗?(我在VB中有一个宏用于替换,我只需要正则表达式) 谢谢 Public Function SearchNReplace1(Pattern1 As String, _ Pattern2 As String, Replacestring As String, _ TestString As String) Dim reg As New RegExp reg.IgnoreCase = True

我有一个excel文件,URL类型为

我想去

有人知道我应该用的正则表达式吗?(我在VB中有一个宏用于替换,我只需要正则表达式)

谢谢

Public Function SearchNReplace1(Pattern1 As String, _
   Pattern2 As String, Replacestring As String, _
   TestString As String)
   Dim reg As New RegExp

   reg.IgnoreCase = True
   reg.MultiLine = False
   reg.Pattern = Pattern1
   If reg.Test(TestString) Then
     reg.Pattern = Pattern2
     SearchNReplace1 = reg.Replace(TestString, Replacestring)
   Else
     SearchNReplace1 = TestString
   End If
End Function
从:
([a-z]+://[a-z0-9.-]+)[^]*
到:
\1

这将吃掉域名后面的所有内容,直到遇到空格或字符串结尾。如果这个不适合你,请提供更多细节

如果您需要ipv6地址作为主机,则必须同时允许
[]:
字符:

from:
([a-z]+://[a-z0-9.\[\]:-]+)[^]*
到:
\1
为我们提供了用于分解通用URI的正则表达式:

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
由于您对提取路径上的所有内容感兴趣,这里有一个等效的正则表达式,它应该可以很好地工作(在PHP语法中允许注释):

$re='%#匹配URI并捕获$1中的方案和路径。
^#锚定到管柱的开头。
(#$1:一切都符合路径。
(?:[^:/?#]+:)?#可选方案。
(?:/[^/?#]*)?#可选权限。
)#结束1美元:一切按路径进行。
[^?#]*#所需路径。
(?:\?    [^#]* )?  # 可选查询。
(?:\#       .* )?  # 可选片段。
$#锚定到字符串末端。
%x′;
这里是完全相同的正则表达式,简而言之,应该在VB中工作:

myRegExp.Pattern=“^((?:[^:/?#]+:)?(?:/[^/?#]*)?)[^?#]*(?:\?[^#]*)(?:?:#*)?(?:#*)”

这个正则表达式不验证URI,它只是将其分解为不同的组件,并将需要的部分提取到捕获组1中。请注意,除了路径之外,每个组件都是可选的(路径本身可能为空)。换句话说,空字符串是有效的URI

谢谢,但对我不起作用。也许问题在于我使用的脚本,我把它添加到了帖子中。我使用了=SearchNReplace1(([a-z]+:/[a-z0-9.-]+)([^])*,“$1”,A2)来激活它,它返回了错误。此外,所有链接都以http://开头,我可以假设它们是合法链接,所以我不需要检查它。反向引用是
\1
,而不是原始链接。如果你写下你收到的任何错误信息,这会有所帮助。事实上,现在1美元就可以了,问题出在脚本中,我把它换成了我在网上找到的另一个。谢谢我很高兴。MSDN使用反斜杠作为反引用:另外,如果您正在寻找一个正则表达式来实际验证URL,请查看我的(正在进行的工作)文章:“