- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想解析字符串中的所有谷歌地图链接。格式如下:
第一个例子https://www.google.com/maps/place/white+house/@38.8976763,-77.0387185,17z/data=!3m1!4b1!4m5!3m4!1s0x89b7b7bcdecbb1df:0x715969d86d0b76bf!8m2!3d38.8976763! 4d-77.0365298
https://www.google.com/maps/place/white+house/@38.8976763,-77.0387185,17z
https://www.google.com/maps/place//@38.8976763,-77.0387185,17z
https://maps.google.com/maps/place//@38.8976763,-77.0387185,17z
https://www.google.com/maps/place/@38.8976763,-77.0387185,17z
https://google.com/maps/place/@38.8976763,-77.0387185,17z
http://google.com/maps/place/@38.8976763,-77.0387185,17z
https://www.google.com.tw/maps/place/@38.8976763,-77.0387185,17z
这些都是有效的谷歌地图网址(链接到白宫)
这是我尝试过的
String gmapLinkRegex = "(http|https)://(www\\.)?google\\.com(\\.\\w*)?/maps/(place/.*)?@(.*z)[^ ]*";
Pattern patternGmapLink = Pattern.compile(gmapLinkRegex , Pattern.CASE_INSENSITIVE);
Matcher m = patternGmapLink.matcher(s);
while (m.find()) {
logger.info("group0 = {}" , m.group(0));
String place = m.group(4);
place = StringUtils.stripEnd(place , "/"); // remove tailing '/'
place = StringUtils.stripStart(place , "place/"); // remove header 'place/'
logger.info("place = '{}'" , place);
String latLngZ = m.group(5);
logger.info("latLngZ = '{}'" , latLngZ);
}
它可以在简单的情况下工作,但仍然有问题......例如
需要后期处理来获取可选的地点
信息
并且它无法提取具有两个网址的一行,例如:
s = "https://www.google.com/maps/place//@38.8976763,-77.0387185,17z " +
" and http://google.com/maps/place/@38.8976763,-77.0387185,17z";
它应该是两个网址,但正则表达式匹配整行...
要点:
group(0)
中匹配(包括第一个示例中的尾部 data
部分),17z
被删除,它仍然是有效的 gmap URL,但我的正则表达式无法匹配它。地点
信息maps.google.com(.xx)/maps
,我尝试过 (www|maps\.)?
但似乎仍然有问题有什么改进这个正则表达式的建议吗?非常感谢!
最佳答案
点星号
.*
始终允许最后一个 url 末尾的任何内容。您需要“更严格”的正则表达式,它匹配单个 URL,但不匹配多个 URL。如果“[^]*”被“”以外的其他内容分隔,则可能包含下一个 URL,其中包括换行符、制表符、移位空格...
我建议(抱歉,没有在java上测试过),使用“除@之外的任何内容”和“数字、减号、逗号或点”和“可选的特殊字符串,后跟定制的字符集,多次”。
"(http|https)://(www\.)?google\.com(\.\w*)?/maps/(place/[^@]*)?@([0123456789\.,-]*z)(\/data=[\!:\.\-0123456789abcdefmsx]+)?"
我在 perl-regex 兼容引擎 (np++) 上测试了上面的内容。
如果我猜错了,请自行调整。显式的数字列表可能可以用“\d”替换,我试图尽量减少对正则表达式风格的假设。
为了匹配“URL”或“URL 和 URL”,请使用存储正则表达式的变量,然后执行“(URL 和 )*URL”,将“URL”替换为正则表达式变量。 (假设这在java中是可能的。)如果问题是如何检索多个匹配项:那就是java,我无能为力。让我知道,我会删除这个答案,而不是激起应有的反对票;-)
(已编辑以捕获之前未见过的第一个示例第一行中的数据部分;以及一行中的多个 URL。)
关于谷歌地图 url 的 Java 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43005917/
假设我拥有域 mydomain.com,并且我在服务器上有一个 Web 应用程序,网址为 http://99.99.99.99:1234/MyApplication/startpage.somethi
我正在尝试通过以下方式更新已解析的 URL: u, _ := url.Parse(s) if u.Scheme == "" { u.Scheme = "https" } if u.Path =
如何将 www.somesite.com/api(.*) 映射到 www.somesite.com/$1:9000? (我需要将/api 映射到运行 @ 端口 9000 的 Play 框架应用程序)
我有一个资源结构,如航类 > 座位 > 预订,所以预订属于某个航类的某个座位: http://example.com/jdf_3prGPS4/1/jMBDy46PbNc
我想知道以下网址是否有效。 路径中的点,在主机之后: http://www.example.com/v.b.w..com 主机中的点,作为子域的一部分: http://v.b.w..co.manufa
我有两个域 - crmpicco.co.uk 和 ayrshireminis.com - 如果我浏览到: www.crmpicco.co.uk/mini/new我希望能够重定向到 www.ayrshi
我正在尝试使用 URL 重写和应用程序请求路由来重写到外部 URL。我设置了以下规则: 在规则中,“patternToMatch”是我试
我已经安装了带有 SharePoint 和 Url Rewrite 模块的 IIS 7.0。 是以下句子还是我配置错误才能看到这个结果? Url Redirect 可以将 url 重定向到任何内部(在
我想知道,为了获得良好的 SEO,您必须在 URL 中使用自然语言。您知道字符中单词或短语的最大大小吗?例如: www.me.com/this-is-a-really-long-url.htm 我问这
有人知道在 SEO 友好 URL 中使用逗号有什么问题吗?我正在使用一些在其 SEO 友好 URL 中使用大量逗号的软件;但我 100% 肯定我见过一些程序/平台无法正确识别 URL 并在第一个逗号后
我有一个网站,我正在为所有链接使用干净的 URL。我想知道对于简短的基本 URL 与较长的描述性 URL 有何看法。 例如,如果我的网站是关于 Georgia Bulldog 足球新闻的,那么哪个网站
我正在编写一个类似于 tinyurl 的 URL 缩短器,我想知道如何跟踪已经使用我的服务缩短的 URL?例如,tinyurl 为相同的长 URL 生成相同的小 URL,而不管是谁创建的。如
我是 magento 的新手。我正在开发一个模块。为此,我有一些要显示链接的 css 和 js 文件。我目前有类似 的链接 getSkinUrl('module_tryouts/css/jquery.
我想基于 HTTP_URL 重写 URL 以重定向到不同的端口,同时保留其余的 URL 和查询字符串(如果指定)。例如, http://host/john/page.aspx 应该重定向到 http:
我遇到了以下问题: 我的 Grails (2.2.0) 应用程序具有以下 URL 映射: "/api/clientQuote/$labcode/$cliCode/$quoCode"(controlle
我有一个很长的 URL,它不适合 URL 字段。它一直在修剪。该怎么办?有没有办法增加 SharePoint 2010 中的 URL 字段字符限制? 或者解决方法来容纳长 URL。例如,以下 URL
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我们从客户以前的开发人员那里继承了相当多的 Google Apps 脚本项目。 Apps 脚本通过嵌入式小部件部署在 Google 网站 (sites.google.com) 的各个页面上。每当我们需
我正在编写一些文档,但遇到了一些词汇问题: http://www.example.com/en/public/img/logo.gif 被称为“绝对”网址,对吗? ../../public/img/l
我们从客户以前的开发人员那里继承了相当多的 Google Apps 脚本项目。 Apps 脚本通过嵌入式小部件部署在 Google 网站 (sites.google.com) 的各个页面上。每当我们需
我是一名优秀的程序员,十分优秀!