正则表达式从文本中每个单词的末尾删除点

时间:2013-05-20 19:14:29

标签: java regex

我尝试仅从给定文本中每个单词的末尾删除点。 (在java中) 例如:

input: java html. .net node.js php.
output: java html .net node.js php

感谢

5 个答案:

答案 0 :(得分:3)

根据您对单词的定义,您可以替换:

(\w)\.(?!\S)

$1。这将删除单词末尾的所有.,后跟空格或字符串结尾。

答案 1 :(得分:2)

你可以这样做:

String repl = "java html. .net node.js php.".replaceAll("\\.(?!\\w)", "");

// java html .net node.js php

答案 2 :(得分:1)

for(String str : input.split(" "))
{ 
     if(str.charAt(str.len - 1) == '.')
         str = str.substr(0, str.len - 2);

     //do something with str
}

如果可能的话,我会避免使用正则表达式,因为它们要慢得多。

答案 3 :(得分:0)

如果您要使用正则表达式,我建议使用using a word boundary

 \.\B

这仅匹配单词边界末尾的文字点。

答案 4 :(得分:0)

基于Qtax答案的精心解决方案:

String s = "java html. .net node.js php.";
System.out.println(s);
s = s.replaceAll("(\\w)\\.(?!\\S)", "$1");
System.out.println(s);

输出:

java html .net node.js php