【发布时间】:2014-02-11 05:58:13
【问题描述】:
我正在尝试删除列表中所有出现的单词,但是当单词中有撇号时我遇到了麻烦。
String phrase="bob has a bike and bob's bike is red";
String word="bob";
phrase=phrase.replaceAll("\\b"+word+"\\b","");
System.out.println(phrase);
输出:has a bike and 's bike is red
我想要的是has a bike and bob's bike is red
我对正则表达式的了解有限,所以我猜有一个解决方案,但我现在还不足以创建正则表达式来处理撇号。此外,我希望它与破折号一起使用,因此短语 the new mail is e-mail 只会替换第一次出现的邮件。
【问题讨论】:
-
我不会在 Java 模式中使用
\b:它是超级坏的。有一种方法可以正确表达,但无论如何这不太可能是您想要的。 -
这是我提取单个单词的酷刑测试:James 问:“这是 Renée 和 Noël 的曾祖父母 1970 年代的避暑别墅,不是吗? ?”没有得到回答,他摇了摇头——然后走开了。 作为一个 Java 字符串,你可以写成
"James asked, \u201C\u2019Tis Ren\u00E9e\u2019s and Noe\u0308l\u2019s great\u2010grandparents\u2019 1970's-ish summer\u2010house, t'isn\u2019t it?\u201D \u00A0 Receiving no answer, he shook his head--and walked away."。祝你好运! -
@tchrist 我正在摇头走开,哈哈。对于我正在做的事情,我不需要担心所有这些可能发生的事情。但这看起来确实是一个有趣的挑战。