日期:2014-05-20  浏览次数:20702 次

一个正则替换词语的问题。知道的回答以下.菜鸟
id= "head "
如果把head替换成aaa,但有些词header里的“head”不替换成aaa,怎么办??
菜鸟问题。
知道回答一下


------解决方案--------------------
分词问题。
------解决方案--------------------
String str = "head header ahead \ "head\ " ";
System.out.println(str.replaceAll( "\\bhead\\b ", " "));
------解决方案--------------------
楼上正解,不过美中不足的是有的单词是有连字符 "- "的.或者会在换行时被截断而加上 "- "
只有[a-zA-Z_0-9]会被认为是单词字符.
看楼主需要了...
------解决方案--------------------
楼上考虑比较全面的说 我就从来没想过这个问题。。
------解决方案--------------------
up
------解决方案--------------------
up

------解决方案--------------------
或者这样试试
head[^e]
------解决方案--------------------
看看这样做行不行,只供参考
比如一个文件中有很多单词: 文件名为word.txt 把文件中的单词head换成aaaa;我个人认为只是替换不需要什么正则表达式::
BufferedReader br = new BufferedReader(new FileReader( "word.txt "));
StringBuilder sb = new StringBulider();
String s = null;
while((s = br.readline()) != null){
sb.append(s);
sb.append( '\n ');
}
String total = sb.toString();
List <String> word = new ArrayList <String> (Arrays.toList(toatl.split( " ")));
StringBulider sd = new StringBulid();
for(String s : word){
if(s.eqquals(head)){
s = "aaaa ";
}
sd.append(s);
sd.append( " ");
}
String text = sd.toString();
在将text写入文件。。 就可以了
要是非要用正则表达式 需要先定义个 pentter ,然后用match(还是mather弄不清楚了)来实现 具体怎么做要参照API来做 自己去看看吧!


------解决方案--------------------
如果是把head作为一个单词看的话 ,那可以这样:
public String stringPattern(String str){
String patternStr= " head ";
str=str.replaceAll(patternStr, "aaa ");
return str;
}

------解决方案--------------------

String str = "head header ahead \ "head\ " ";
System.out.println(str.replaceAll( "\\bhead\\b ", " "));

用\b准确分词才是正确做法