Regex 用于获取URL Excel VB的域的正则表达式
我有一个excel文件,URL类型为 我想去 有人知道我应该用的正则表达式吗?(我在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
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,请查看我的(正在进行的工作)文章:“