我有一根这样的绳子
在修建一条通往http://www.bbc.com/news/的铁路时,5具/爱尔兰人/移民/“被霍乱杀害”的身体
我试着用下面的方法去除斜杠
replaceAll("/","");我得到的是
在1832年修建一条通往http:www.bbc.comnews的铁路时,5名爱尔兰移民的身体被霍乱杀害。
我想保留URL斜杠,但希望去掉文本中的其他斜杠。如有任何建议,将不胜感激。
发布于 2014-07-07 14:27:02
似乎你只想删除斜杠,这是在开始或结束的话。所以这样的斜线需要
这种方法有一个潜在的缺陷,就是删除像http://www.some.address/这样的URL地址中的最后一个斜杠就会变成http://www.some.address。
如果这就是你想要的,你可以尝试使用环顾四周机制,
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问题中删除最后一个/的方法是先使regex匹配URL并将其替换为自己。这将防止从这个URL斜杠再次匹配(测试),因为有空格或开始字符串之前或有空格或结束字符串之后。
我是说形式上的regex
(matchesURL)|matchesSlashesAtStartOfWord|matchesSlashesAtEndOfWord对于这样的正则表达式,由/匹配的(matchesURL)将无法再由matchesSlashesAtStartOfWord|matchesSlashesAtEndOfWord匹配。
所以你可以用这样的方法
replaceAll("(https?://[^/]+(/[^/]+)*/?)|(?<=\\s|^)/|/(?=\\s|$)", "$1")它将首先匹配urls,将它们放入第1组,并替换为第1组$1的内容。由于regex (?<=\\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/发布于 2014-07-07 14:18:39
这是一个病态的例子。记住,Regexs只是收集模式,所以最好的模式将取决于您的数据。
例如,在您提供的字符串中,regex:[^:/m]/就足够了。然而,这也忽略了任何文本中"m“之后的任何斜杠。这不太好,除非你知道你所有的斜杠都不是在“m”之后。
对于这个例子,我建议分离URL。如果您知道URL总是在末尾,您可以拆分字符串,只在文本上运行替换,而不是URL。
像这样的东西可能对你很管用。
String s是我们病态的标题
String text = s.replace("http.*","");
String url = s.replace(".*http","http");
text = text.replace("/","");
text = text + " " + url;这将保存除了url到text的所有东西,只将url保存到url,然后清除text,并将url追加到末尾。
https://stackoverflow.com/questions/24612682
复制相似问题