【发布时间】:2016-04-14 20:56:48
【问题描述】:
我在 apex 中有一个正则表达式,它只在字符串中抓取我需要的部分链接。我需要它来抓取整个链接。
这是我的工作:
String myvar = 'this is an example http://test.com/testing/123654123%0A%0A%0A%';
String myvar1 = '(?:(?:(?:[a-z0-9]{3,9}:(?://)?)(?:[-;:&=+$,w]+@)?[a-z0-9.-]+|(?:www.|[-;:&=+$??,w]+@)[a-z0-9.-]+)((?:/[+~%/.w-]*)?\\??(?:[-+=&;%@.w]*)#?w*)?)';
Pattern MyPattern = Pattern.compile(myvar1);
Matcher MyMatcher = MyPattern.matcher(myvar);
while (MyMatcher.find()) {
System.debug(MyMatcher.group());
Location = MyMatcher.group();
}
这只是返回http://test.com/
我需要http://test.com/testing/123654123
如何修改正则表达式以提供完整的链接?
我只需要修改我现有的正则表达式即可完成此操作。如何尽可能多地保留 im 使用的正则表达式?
(?:(?:(?:[a-z0-9]{3,9}:(?://)?)(?:[-;:&=+$,w]+@)?[a-z0-9.-]+|(?:www.|[-;:&=+$??,w]+@)[a-z0-9.-]+)((?:/[+~%/.w-]*)?\\??(?:[-+=&;%@.w]*)#?w*)?)
【问题讨论】:
-
如果您只是想匹配链接,那么
http[^\\s]+就足够了吗? Demo -
哪种链接?只有 HTTP 还是您需要它来获取任何类型的链接? (https://gopher://ftp://myownpersonnalurlscheme://) 是否需要拆分不同的组件,是否需要处理端口和用户等。
-
没有真正可靠的方法可以在字符串中查找 url。您所能做的就是搜索已定义的 url。
-
您好,在我的实际版本中,链接后面是 %。我将如何解决这个问题?例如,这是一个示例 test.com/testing/123654123%0A%0A%0A%
-
@noob 你能帮帮我吗?
标签: java regex url expression apex