gpt4 book ai didi

java - 保护 URL 斜杠并去掉文本中的其他斜杠

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:07 27 4
gpt4 key购买 nike

我有一个这样的字符串

Bodies of 5 /Irish/ immigrants /'murdered and killed by cholera' while building a railroad/ in 1832 to http://www.bbc.com/news/

我尝试使用以下方法去除斜线

replaceAll("/","");

我得到的是

Bodies of 5 Irish immigrants 'murdered and killed by cholera' while building a railroad in 1832 to http:www.bbc.comnews

我想保留 URL 斜杠,但想去掉文本中的其他斜杠。任何建议将不胜感激。

最佳答案

您似乎只想删除单词开头或结尾的斜杠。所以这样的斜杠需要

  • 前面有空格
  • 后面有空格
  • 放在字符串的开头
  • 放在字符串的末尾

这种方法有一个潜在的缺陷,即删除 URL 地址中的最后一个斜杠,如 http://www.some.address/会变成http://www.some.address .

如果这是您正在寻找的内容,您可以尝试使用 look-around机制,

replaceAll("(?<=\\s|^)/|/(?=\\s|$)", "")

会改变

Bodies of 5 /Irish/ immigrants /'murdered and killed by cholera' 
while building a railroad/ in 1832 to http://www.bbc.com/news/

进入

Bodies of 5 Irish immigrants 'murdered and killed by cholera' 
while building a railroad in 1832 to http://www.bbc.com/news
^as you see it also
removed last slash
in this url

移除最后一个的方法 /在 URL 问题中,首先使正则表达式匹配 URL 并将其替换为自身。这将防止再次匹配(测试)来自此 URL 的斜杠,因为在它之前有空格或字符串开头,或者在它之后有空格或字符串结尾。
我的意思是形式上的正则表达式

(matchesURL)|matchesSlashesAtStartOfWord|matchesSlashesAtEndOfWord

对于这样的正则表达式 /匹配(matchesURL) matchesSlashesAtStartOfWord|matchesSlashesAtEndOfWord 将无法再次匹配.

所以你可以使用类似的东西

replaceAll("(https?://[^/]+(/[^/]+)*/?)|(?<=\\s|^)/|/(?=\\s|$)", "$1")

这将首先匹配 url,将它们放入第 1 组并用第 1 组的内容替换它们 $1 .由于正则表达式的其他情况 (?<=\\s|^)/|/(?=\\s|$)不能在第 1 组中放置任何东西,对他们来说 $1将是空的,所以你将替换这样的 /什么都没有(您将删除它们)。

演示

String data = "Bodies of 5 /Irish/ immigrants /'murdered and killed by cholera' \r\nwhile building a railroad/ in 1832 to http://www.bbc.com/news/";
System.out.println(data);
System.out.println();
System.out.println(data.replaceAll("(https?://[^/]+(/[^/]+)*/?)|(?<=\\s|^)/|/(?=\\s|$)", "$1"));

输出

Bodies of 5 /Irish/ immigrants /'murdered and killed by cholera' 
while building a railroad/ in 1832 to http://www.bbc.com/news/

Bodies of 5 Irish immigrants 'murdered and killed by cholera'
while building a railroad in 1832 to http://www.bbc.com/news/

关于java - 保护 URL 斜杠并去掉文本中的其他斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24612682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com