我不明白,为什么这个正则表达式不能取代“dürfen”...... 我有一个输入文本,需要替换很多填充词。但有些人因某些原因被忽略了。这必须与空间做一些事情,但我不明白。
String input = "melanie rugullies eching trägt dirndl darüber das volksfestmadl stadt freising dürfen begeistern für tanzsport ";
//does not work
input = input.replaceAll("( dürfen )", " ");
input = input.replaceAll("(\\sdürfen\\s)", " ");
input = input.replace(" dürfen ", " ");
//works ...
input = input.replaceAll("(\\sdarüber\\s)", " ");
input = input.replaceAll("(\\smöchte\\s)", " ");
//input = input.replace(" dürfen", " "); //works but is not desired ...
System.out.println(input);
输出
melanie rugulliesechingträgtdirndldas volksfestmadl stadt freisingdürfenbegeisternfürtanzsport
预计“dürfen”不是输出的一部分..但它是!另一方面“darüber”消失了......
答案 0 :(得分:1)
此代码可以正常工作(对于已翻译的字母没有问题),其正则表达式使字符串的间距正确:
input = input.replaceAll("\\W*\\bdürfen\\b\\W*", " ").trim();
这个正则表达式的一个小区别是它消耗任何非单词字符(即连字符等,而不仅仅是空格),并且放入空间。然后修剪该结果以处理在输入的开始/结束处发生的替换的边缘情况。
答案 1 :(得分:0)
这适用于python ......
# coding: utf-8
import re
s = "melanie rugullies eching trägt dirndl darüber das volksfestmadl stadt freising dürfen begeistern für tanzsport "
print(re.sub(' dürfen ','',s))
# melanie rugullies eching trägt dirndl darüber das volksfestmadl stadt freisingbegeistern für tanzsport
只尝试替换" dürfen "
代替"( dürfen )"
或"(\\sdürfen\\s)"
。
答案 2 :(得分:0)
你的问题是你的正则表达式在搜索词的两边都包含空格。在正则表达式引擎替换单词" dürfen "
的一个实例后,它在左侧和右侧没有留下单词的空间。因此,下一个单词替换失败(由于单词之前没有空格)。
您可以使用前瞻性正则表达式来解决此问题:
String input = "melanie rugullies eching trägt dirndl darüber das volksfestmadl stadt freising dürfen begeistern für tanzsport ";
input = input.replaceAll("\\s+(dürfen|darüber|möchte)(?=\\s)", "");
System.out.println( input );
//=> melanie rugullies eching trägt dirndl das volksfestmadl stadt freising begeistern für tanzsport
答案 3 :(得分:0)
没有问题,您的代码运行正常。
package com.stackoverflow;
公共类MainClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
String input = "melanie rugullies eching trägt dirndl darüber das volksfestmadl stadt freising dürfen begeistern für tanzsport ";
//does not work
input = input.replaceAll("( dürfen )", " ");
input = input.replaceAll("(\\sdürfen\\s)", " ");
input = input.replace(" dürfen ", " ");
//works ...
//input = input.replaceAll("(\\sdarüber\\s)", " ");
//input = input.replaceAll("(\\smöchte\\s)", " ");
//input = input.replace(" dürfen", " "); //works but is not desired ...
System.out.println(input);
}
}
输出
melanie rugulliesechingträgtdirndldarüberdasvolksfestmadl stadt freisingbegeisternfürtanzsport