Java 保护URL斜杠并删除文本中的其他斜杠
我有一根这样的绳子 5具尸体/爱尔兰人/移民/死于霍乱 修建铁路/1832年至 我试着用以下方法去除斜杠Java 保护URL斜杠并删除文本中的其他斜杠,java,regex,text,Java,Regex,Text,我有一根这样的绳子 5具尸体/爱尔兰人/移民/死于霍乱 修建铁路/1832年至 我试着用以下方法去除斜杠 replaceAll("/",""); 我得到的是 五具爱尔兰移民尸体被霍乱杀害 1832年修建铁路至http:www.bbc.comnews 我想保留URL斜杠,但想去掉文本中的其他斜杠。任何建议都将不胜感激。这是一个病态的例子。请记住,正则表达式只是拾取模式,因此适合您的最佳模式取决于您的数据 例如,在您提供的字符串中,regex:[^:/m]/就足够了。但是,这也会忽略任何文本中“m
replaceAll("/","");
我得到的是
五具爱尔兰移民尸体被霍乱杀害
1832年修建铁路至http:www.bbc.comnews
我想保留URL斜杠,但想去掉文本中的其他斜杠。任何建议都将不胜感激。这是一个病态的例子。请记住,正则表达式只是拾取模式,因此适合您的最佳模式取决于您的数据 例如,在您提供的字符串中,regex:
[^:/m]/
就足够了。但是,这也会忽略任何文本中“m”之后的任何斜杠。这并不好,除非你知道所有的斜杠都不会在“m”之后
对于这个例子,我建议将URL分开。如果知道URL将始终位于末尾,则可以拆分字符串并仅对文本而不是URL运行替换
像这样的东西可能对你很有用
字符串s
是我们病态的标题
String text = s.replace("http.*","");
String url = s.replace(".*http","http");
text = text.replace("/","");
text = text + " " + url;
这将保存除指向
文本
的url之外的所有内容,仅保存指向url
的url,然后清除文本
,并将url追加回末尾 您似乎只想删除单词开头或结尾的斜杠。因此,这样的削减需要进行
- 以前有空位吗
- 留有余地
- 放在字符串的开头
- 放在绳子的末端
http://www.some.address/
将变成http://www.some.address
如果这就是你要找的,你可以试试机械装置
replaceAll("(?<=\\s|^)/|/(?=\\s|$)", "")
进入
删除URL问题中最后一个
/
的方法是先让正则表达式匹配URL,然后用它自己替换它。这将防止再次匹配(测试)此URL中的斜杠,因为斜杠前面有空格或字符串开头,后面有空格或字符串结尾。我指的是形式上的正则表达式
(matchesURL)|matchesSlashesAtStartOfWord|matchesSlashesAtEndOfWord
对于这样的正则表达式,由(matchesURL)匹配的/
,
将无法由匹配lashesatstartofword |匹配lashesatenofword
再次匹配
所以你可以用
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/
使用string.split拆分字符串;然后循环浏览单词,如果不是URL,则从中删除“/”。您可以使用URLValidator检查URL是否有效,例如,在这里使用URLValidator可能会帮助您
\s/|/\s
,这意味着任何/
之前或之后都有空间。或者使其更加精确(?更换时无需分组/
,因此请尝试(?那不是真的。正如我在文章中提到的,只要url在末尾,它就可以工作。但是,通过一点额外的代码,它可以适应于将url恢复到任何位置。这就是我所说的,我说它适用于本例,但不适用于Allon。我再次从这个开始。任何解决方案的有效性都完全取决于dat一种格式。根据我们对数据的了解,这是有效的。如果我们能看到更多关于格式的信息,我会更新。
replaceAll("(https?://[^/]+(/[^/]+)*/?)|(?<=\\s|^)/|/(?=\\s|$)", "$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/