英文:
regex to replace a whole word, not characters
问题
我有以下代码片段:
String[] alsoReplace = {"and", "the", "&"};
for (String str : alsoReplace) {
s = s.replaceAll("(?i)\\b" + str + "\\b(\\s+)?", "");
}
我需要修改其中的正则表达式,以便将字符串中作为单词出现的“and”或“the”进行替换,而不仅仅是作为单词的一部分。
示例:
Dean and James -> Dean James
Deand James -> Deand James
我还需要保持不区分大小写的替换,
这行代码应如何修改?
s = s.replaceAll("(?i)\\b" + str + "\\b(\\s+)?", "");
英文:
i have the following snippet:
String[] alsoReplace = {"and", "the", "&"};
for (String str : alsoReplace) {
s = s.replaceAll("(?i)" + str + "(\\s+)?" , "");
}
I need to alter the regex in it, so as to replace the "and" or "the" found in a string as a word, not as just part of a word.
example:
Dean and James -> Dean James
Deand James -> Deand James
I also need to keep the case insensitive replacement,
how this line should become?
s = s.replaceAll("(?i)" + str + "(\\s+)?" , "");
答案1
得分: 1
你需要使用\b
(单词边界)仅替换整个单词,然后将所有多个空格替换为单个空格。
String s = "Deand and James And";
String[] alsoReplace = {"and", "the", "&"};
for (String str : alsoReplace) {
s = s.replaceAll("(?i)\\b" + str + "\\b" , "");
}
s = s.trim().replaceAll(" +", " ");
输出结果:Deand James
英文:
You need to use \b
(word boundary) to replace the whole word only and after replace all multiple spaces with a single space.
String s = "Deand and James And";
String[] alsoReplace = {"and", "the", "&"};
for (String str : alsoReplace) {
s = s.replaceAll("(?i)\\b" + str + "\\b" , "");
}
s = s.trim().replaceAll(" +", " "); // remove multiple space into single
Output: Deand James
答案2
得分: 0
第一部分非常简单:您不希望将“and”替换为“”,而是将被空格包围的“ and ”(由空格包围的完整单词)替换为“ ”,因此类似于以下内容:
String[] alsoReplace = {" and ", " the ", "&"};
for (String str : alsoReplace) {
s = s.replaceAll("(?i)" + str + "(\\s+)?", " ");
}
英文:
The first part is quite easy: You don't want to replace "and" with "" but rather " and " (a full word defined by being surrounded with spaces) with " ", so something similar to
String[] alsoReplace = {" and ", " the ", "&"};
for (String str : alsoReplace) {
s = s.replaceAll("(?i)" + str + "(\\s+)?" , " ");
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论