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

使用正则表达式的codingBat plusOut

施晗日
2023-03-14
问题内容

这与我之前的努力(wordEndsrepeatEnd)相似:作为一项心理锻炼,我只想使用正则表达式解决此玩具问题。

来自codingbat.com的描述:

给定一个字符串和一个非空的单词字符串,返回原始字符串的版本,其中所有字符都被加号("+")替换,但单词字符串的外观保持不变。

plusOut("12xy34", "xy") → "++xy++"
plusOut("12xy34", "1") → "1+++++"
plusOut("12xy34xyabcxy", "xy") → "++xy++xy+++xy"

没有提及是否允许重叠(例如,什么是plusOut("+xAxAx+", "xAx")?),但是我的非正则表达式解决方案无法处理重叠并且可以通过,因此我猜我们可以假设word是否发生了不重叠的情况(如果它使它更简单(奖金)如果您同时提供两种变体的解决方案,则积分!)。

无论如何,我都想使用正则表达式来解决此问题(与其他两个问题之前的样式相同),但是我绝对很沮丧。我什至没有什么可展示的,因为我没有任何作品。

因此,让我们看看stackoverflow社区提出了什么。


问题答案:

通过所有测试:

public String plusOut(String str, String word) {
  return str.replaceAll(
    String.format("(?<!(?=\\Q%s\\E).{0,%d}).", word, word.length()-1),
    "+"
  );  
}

另外,我得到:

plusOut("1xAxAx2", "xAx") → "+xAxAx+"

如果这是您想要的结果,那么我也通过了重叠测试,但是我不得不承认,这是偶然的。:D



 类似资料:
  • 行动时刻 - 使用正则表达式 Unlang允许在条件检查中进行正则表达式计算。这些通常是Posix正则表达式。运算符=〜和!〜与正则表达式相关联。为了简单的概念证明,我们将修改上一个练习: 1.编辑FreeRADIUS配置目录下的sites-available / default虚拟服务器,并在该部分顶部的post-auth部分中添加以下内容: if(request:Framed-Protocol

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • sorter: "${$(...props)=>{timeSort(createTime)}$}$", ..$}$"."${$.. 希望结果 :sorter: (...props)=>{timeSort(createTime)}, ..$}$"."${$.. 规则: "${$ 和 $}$" 是一对,将他们替换为空。

  • 本文向大家介绍Java正则表达式使用,包括了Java正则表达式使用的使用技巧和注意事项,需要的朋友参考一下 一:抓取网页中的Email地址 利用正则表达式匹配网页中的文本 将网页内容分割提取 打印结果: 867124664@qq.com 260678675@QQ.com 806208721@qq.com hr_1985@163.com 32575987@qq.com qingchen0501@12

  • 使用正则表达式 现在我们已经看了一些简单的正则表达式,那么我们实际在 Python 中是如何使用它们的呢? re 模块提供了一个正则表达式引擎的接口,可以让你将 REs 编译成对象并用它们来进行匹配。

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。