当前位置: 首页 > 面试题库 >

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

公西志文
2023-03-14
问题内容

我可以通过以下方式替换美元符号Matcher.quoteReplacement. :通过添加边界字符来替换单词:

from = "\\b" + from + "\\b"; 
outString = line.replaceAll(from, to);

但是我似乎无法将它们结合起来用美元符号代替单词。

这是一个例子。我正在尝试将“ $temp4”(不$temp40)替换为“ register1”。

        String line = "add, $temp4, $temp40, 42";
        String to = "register1";
        String from = "$temp4";
        String outString;


        from = Matcher.quoteReplacement(from);
        from = "\\b" + from + "\\b";  //do whole word replacement

        outString = line.replaceAll(from, to);
        System.out.println(outString);

产出

"add, $temp4, $temp40, 42"

如何获得它来代替$ temp4和仅$ temp4?


问题答案:

使用明确的单词边界,(?<!\w)(?!\w),而不是\b上下文相关的:

from = "(?<!\\w)" + Pattern.quote(from) + "(?!\\w)";

请参阅 regex演示

(?<!\w)如果在当前位置的左侧紧邻有一个非单词char
,则是一个向后的否定后向匹配;如果在当前位置的右侧紧邻有一个非char字符,(?!\w)则一个否定的向前查找使匹配失败。
。在Pattern.quote(from)逃跑中的任何特殊字符是必要的from变量。

参见Java演示:

String line = "add, $temp4, $temp40, 42";
String to = "register1";
String from = "$temp4";
String outString;

from = "(?<!\\w)" + Pattern.quote(from) + "(?!\\w)";

outString = line.replaceAll(from, to);
System.out.println(outString);
// => add, register1, $temp40, 42


 类似资料:
  • 问题内容: 如何修剪Java字符串中的开头或结尾字符? 例如,斜杠字符“ /”-我对空格不感兴趣,并且希望在不同的时间修剪前导或尾随字符。 问题答案: 你可以用 领导: 尾随:

  • 问题内容: 我有一个包含路径的字符串 我想修剪前后的和。Python 3的最佳做法是什么? 目前我正在使用 两个问题: 这是在Python 3中修剪特定字符的最佳修剪功能吗? Python 3中是否有针对此类操作的特定路径函数,因此我不必手动设置定界符? 问题答案: 我相信这是Python方式。当有内置函数时,通常是这种情况。 库中有一些内置的路径操纵器。如果操纵器之一适合您的用例,则可能要使用它

  • 我有一个包含路径的字符串 并且我想修剪前导和后导的和。Python3中的最佳实践是什么? 目前我正在使用 两个问题: 这是在Python 3中修剪特定字符的最佳修剪函数吗? 在Python 3中是否有针对此类操作的特定路径函数,这样我就不必手动设置分隔符了?

  • 问题内容: 我想用php代替完整的单词 示例:如果我有 我用 新文本应如下所示 新hello1您好,Helloz PHP返回 NEW hello1 hello,NEWz 谢谢。 问题答案: 您要使用正则表达式。该单词边界匹配。 如果包含UTF-8文本,则必须添加Unicode修饰符“ u”,以便不会将非拉丁字符误解为单词边界:

  • 我认为这个标题解释得不够充分。 基本上我有一个包含所有元音的列表和另一个包含组成单词的字符的列表。 我需要获取包含单词的列表,并获取第一个元音之前的所有字符,然后按顺序将它们添加到末尾。 我不明白的是怎么做,我有两个想法: 另一个基本上是一样的,但是每次看到不是元音,它就会弹出来。我最初没有看到的明显问题是“元音”不仅仅是一个单数实体,字符不等于a,流行,字符不等于e,流行等等。或者在vCount

  • 我正在寻找正确的regex来为我提供以下结果: null 例子: 福吧 组1:foo 组2:bar 说明:在空格上拆分 组1:foo bar 描述:用双引号包围,所以将foo和bar分组,但不要打印双引号 null null null null null 组1:foo bar 组2:堆栈溢出 组1:foo'bar 组2:堆栈溢出 组3:如何 组4:do 组5:您 组6:do