如何确保 replaceAll 将替换整个单词而不是子字符串

     2023-02-26     226

关键词:

【中文标题】如何确保 replaceAll 将替换整个单词而不是子字符串【英文标题】:How to ensure replaceAll will replace a whole word and not a subString 【发布时间】:2014-11-02 12:05:52 【问题描述】:

我有一个字典输入。迭代字典以替换文本中字典中的key。但是replaceAll 函数也替换了subString

如何确保匹配整个单词(作为一个整体而不是作为subString

String text= "Synthesis of 1-(2,6-dimethylbenzyl)-1H-indole-6-carboxylic acid [69-3] The titled compound (883 mg) sdvfshd[69-3]3456 as a white solid was prepared"

dictionary= [69-3]=1-(2,6-dimethylbenzyl)-1H-indole-6-carboxylic acid 

for(Map.Entry<String, String> entry : dictionary.entrySet())

        text=text.replaceAll("\\b"+Pattern.quote(entry.getKey())+"\\b", entry.getValue());

 

【问题讨论】:

您是否尝试在替换之前检查equal 的元素? 我没有得到这个问题..你所说的平等是什么意思???我正在使用整个文本来替换它并且没有标记它.. 【参考方案1】:

replaceAll 将正则表达式作为参数。

在正则表达式中,您有 word boundaries : \b(在字符串文字中使用 \\b)。它们是确保您匹配单词而不是单词一部分的最佳方式:"\\bword\\b"

但在您的情况下,您不能使用单词边界,因为您不是在寻找单词([69-3] 不是单词)。

我建议这样做:

text=text.replaceAll("(?=\\W+|^)"+Pattern.quote("[69-3]")+"(?=\\W+|$)", ...

这个想法是匹配一个字符串结尾或不是单词的东西。不过,我不能确保这将是适合您的解决方案:必须在了解确切的完整用例的情况下调整这种模式。

请注意,如果您的所有键都遵循类似的模式,则可能有比遍历字典更好的解决方案,例如,您可以使用"(?=\\W+|^)\\[\\d+\\-\\d+\\](?=\\W+|$)" 之类的模式。

【讨论】:

我使用 Pattern.quote 来保持特殊字符的完整性。但即使这样也行不通。我也试过 \\b .. 它不起作用 @user2832203 请在您的问题中写下不起作用的代码。【参考方案2】:

"\bword\b" 对我有用。

示例代码:

for (row <- df.rdd.collect)   
var config_key = row.mkString(",").split(",")(0)
var config_value = row.mkString(",").split(",")(1)
val rc_applied_hiveQuery="select * from emp_details_Spark2 where empid_details= 'empid' limit 10"
var str_row = rc_applied_hiveQuery.replaceAll("\\b"+config_key+"\\b", "xyz")
println(str_row)

输出:select * from emp_details_Spark2 where empid_details= '5' limit 10

【讨论】:

如何替换光标下的单个单词?

】如何替换光标下的单个单词?【英文标题】:Howtoreplaceasinglewordundercursor?【发布时间】:2012-12-2309:34:08【问题描述】:如何在Vim中替换光标下的单词。那么除了使用dw然后i然后是单词然后Esc,有没有更简单的组合来替换光标下... 查看详情

替换 HTML 页面上所有出现的子字符串而不使用 replaceAll 并将大小写保持为原始

】替换HTML页面上所有出现的子字符串而不使用replaceAll并将大小写保持为原始【英文标题】:ReplacealloccurrencesofthesubstringonHTMLpagewithoutreplaceAllandkeepcaseasoriginal【发布时间】:2021-10-1715:28:13【问题描述】:我试图在不使用replaceAll的... 查看详情

仅在 Lua 中使用正则表达式替换整个单词

】仅在Lua中使用正则表达式替换整个单词【英文标题】:SubstitutingwholewordsonlyusingRegexinLua【发布时间】:2021-08-0801:08:13【问题描述】:我正在制作一个能正确识别用户性别的程序。所以它应该将he的每个实例替换为she,反之亦然... 查看详情

如何在二维数组中搜索单词和替换

】如何在二维数组中搜索单词和替换【英文标题】:Howtosearchwordandreplacein2Darray【发布时间】:2020-11-3008:58:28【问题描述】:我是C#新手。如何搜索整个单词并将其替换为我想要的单词。例如找到“SUCCESS”并替换为“XXXXXXX”。正... 查看详情

如何将此正则表达式替换从替换单个单词更改为替换单词数组?

】如何将此正则表达式替换从替换单个单词更改为替换单词数组?【英文标题】:Howtochangethisregexreplacefromreplacingasinglewordtoreplacinganarrayofwords?【发布时间】:2019-01-3114:16:58【问题描述】:我已经搜索过,但无法根据我的代码调整... 查看详情

如何在 React Router v5 中更新 URL 并替换历史状态而不重新渲染整个应用程序?

】如何在ReactRouterv5中更新URL并替换历史状态而不重新渲染整个应用程序?【英文标题】:HowtoupdatetheURLandreplacehistorystateinReactRouterv5withoutre-renderingthewholeapp?【发布时间】:2021-01-1309:34:16【问题描述】:在使用ReactRouter及其浏览器... 查看详情

将字符串 c++ 截断为长度而不剪切单词

...切割成更小的字符串(存储到字符串向量中),但我需要确保不要切割单词;所以当我找到空格时我需要拆分;我写了一个代码,但我不确定这是解决问题的最佳方法。任何帮助将不胜感激 查看详情

我想知道如何运行 vba 脚本来查找和替换仅在一张工作表中而不是整个工作组中的多个单词?

】我想知道如何运行vba脚本来查找和替换仅在一张工作表中而不是整个工作组中的多个单词?【英文标题】:Iwouldliketoknowhowtorunavbascripttofindandreplacemultiplewordsinonlyonesheetnotthewholeworkgroup?【发布时间】:2019-01-2419:08:21【问题描述】... 查看详情

替换字符串中的单词而不跳过空格

】替换字符串中的单词而不跳过空格【英文标题】:Replacewordsinastringwithoutskippingwhitespaces【发布时间】:2014-12-1216:11:04【问题描述】:我有一个包含句子的字符串。我必须搜索并替换该字符串中的特定单词。就我而言,我有一个... 查看详情

查找部分单词但替换整个单词[关闭]

】查找部分单词但替换整个单词[关闭]【英文标题】:findpartofthewordbutreplacewholeword[closed]【发布时间】:2016-08-1416:52:09【问题描述】:str=\'worldisthebigsorrow\'f=\'or\'例如,我需要用&lt;b&gt;包装str中的所有单词,其中包含f:result... 查看详情

使用 regex.replace 替换 html 字符串中的单词而不影响 html 标签和部分单词

】使用regex.replace替换html字符串中的单词而不影响html标签和部分单词【英文标题】:Usingregex.replacetoreplacewordsinhtmlstringwithoutaffectinghtmltagsandpartsofwords【发布时间】:2021-08-2614:49:03【问题描述】:我想用另一个单词替换html字符串中... 查看详情

如何将单词描述的数字替换回数字? [复制]

】如何将单词描述的数字替换回数字?[复制]【英文标题】:Howtoreplacenumberdescribedbywordsbackintonumber?[duplicate]【发布时间】:2015-10-1923:34:33【问题描述】:我正在设置一个程序来读取用户的输入消息并按单词分解响应。为了使其适... 查看详情

将整个单词与字符串中的前导或尾随特殊符号(如美元)匹配

...-09-2801:18:22【问题描述】:我可以使用Matcher.quoteReplacement.替换美元符号我可以通过添加边界字符来替换单词:from="\\\\b"+from+"\\\\b";ou 查看详情

搜索和替换不仅可以用空格分隔的整个单词

】搜索和替换不仅可以用空格分隔的整个单词【英文标题】:Searchandreplacewholewordswhichcanbeseparatednotonlybyaspace【发布时间】:2012-07-2813:07:45【问题描述】:我正在寻找一种方法来搜索和替换整个单词。整个单词不仅可以用空格分隔... 查看详情

pandas:只替换单词而不是整个句子

】pandas:只替换单词而不是整个句子【英文标题】:pandas:replaceonlythewordandnottheentiresentence【发布时间】:2022-01-1309:04:19【问题描述】:我有一个如下的数据框:(e,g)importpandasaspddf=pd.DataFrame(\'text\':[\'LaryPageisvisitingonSaturday\',\'OnMonday... 查看详情

PHP字符串替换匹配整个单词

】PHP字符串替换匹配整个单词【英文标题】:PHPstringreplacematchwholeword【发布时间】:2011-03-2611:19:19【问题描述】:我想用php替换完整的单词示例:如果我有$text="Hellohellolhello,Helloz";我用$newtext=str_replace("Hello",\'NEW\',$text);新文本应... 查看详情

用一组单词数组中的随机单词替换字符串中的整个单词

】用一组单词数组中的随机单词替换字符串中的整个单词【英文标题】:Replacewholewordsinastringwitharandomwordfromanarrayofgroupedwords【发布时间】:2017-11-0309:32:24【问题描述】:$myVar=\'essapizzaémuitogostosa\';$myWords=array(array(\'sabor\',\'gosto\',\'... 查看详情

如何在不替换整个文件的情况下写入 JSON 文件中的数组

】如何在不替换整个文件的情况下写入JSON文件中的数组【英文标题】:HowtowritetoaarrayinJSONfilewithoutreplacingtheentirefile【发布时间】:2022-01-1704:07:21【问题描述】:是否可以将NodeJs中的数组(仅数据)写入JSON文件而不替换其他数组... 查看详情