【问题标题】:Regular Expression with no final dot pattern [duplicate]没有最终点模式的正则表达式[重复]
【发布时间】:2021-10-30 03:53:50
【问题描述】:

我需要在 VBScript Word 中评估宏链接而不选择潜在的结束点(句子的结尾),例如:

  • http://www/foo.com/mypage.php (没有结束点)
  • http://www/foo.com/mypage5.php。 (带结束点)

我已将此正则表达式设置为在正则表达式测试页面中可以正常工作,但在字符 ^ 上返回运行时错误 5692(对于...来说不是有效的特殊字符)

pattern = "((http|https)?:\/\/)?([a-z|0-9])([\da-z\/\.-]+)\.(\S*[^\.])"

【问题讨论】:

  • pattern = "(https?://)?[a-z0-9][\da-z/.-]*\.\S*[^\s.]" 工作吗 (demo)?
  • 不。同样的错误:-(
  • 还有pattern = "(https?://)?[a-z0-9][\da-z/.-]*\.\S*\b?

标签: regex url vbscript


【解决方案1】:

图案

(htt.*:\/\/)(.*\/)(.*\.[A-Za-z]+)

将匹配各种仅以字母结尾的 url,我冒昧地将其分为 3 个捕获组:

  1. 协议 - http / https
  2. 域 - 以下任何 www/foo.bar/ 或 www.foo.bar/ 或 foo.bar/
  3. URI - 以下任何一个 mypage.php 或 mypage.php.js.python.json 或 .php

说明

获取以“htt”开头的字符串,后跟无限数量的字符,直到遇到“://”并将其设置为组 1

继续运行无限数量的字符,直到您点击第一个“/”并将其设置为第 2 组

再次继续运行无限数量的字符,直到您明确点击“。”其次是无限数量的英文字母并将其设置为第3组

在你的具体例子中

(1) http://www/foo.com/mypage.php
(2) http://www/foo.com/mypage5.php.

我设法捕获了以下输出:

match_1 http://www/foo.com/mypage.php
group_1 http://
group_2 www/foo.com/
group_3 mypage.php

match_1 http://www/foo.com/mypage5.php
group_1 http://
group_2 www/foo.com/
group_3 mypage5.php

【讨论】:

  • OP 说 “在正则表达式测试页面中工作正常” 所以问题更多是关于为什么他们在 VBScript 中得到错误 5692。
  • @user692942 OP 的问题的答案对我来说是未知的,但我建议了一个不使用“^”字符的解决方法。希望它可以解决OP是经验的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 2016-01-11
  • 2021-06-01
  • 1970-01-01
相关资源
最近更新 更多