当前位置: 首页 > 知识库问答 >
问题:

为什么正则表达式中的“”(或)作为替换条件会产生奇怪的结果

於意蕴
2023-03-14
([km]u|nya|[kl]ah|pun)$
diserahkannyalah

而不是显示“diserahkan”,其结果是“diserahkannya”。因此,在尝试替换操作时,并不满足所有条件。为什么会这样?Im使用Java并使用Matcher中的replaceAll方法

共有1个答案

司信厚
2023-03-14

你只需要添加一个量词:

([km]u|nya|[kl]ah|pun)+$
                      ^

请参阅正则表达式演示

这个+告诉regex引擎重复匹配+量化的模式1次或多次。这里,量词出现在)之后,该关闭了一个捕获组,因此,整个捕获组模式被量化。

 类似资料:
  • 当我发现这个奇怪的东西时,我正在玩JSX。使用以下JSX: 会产生正确的结果: 但我想在引号周围添加双引号,因此我尝试: 令我惊讶的是,它给出了正确的输出: 我希望得到类似的输出,因为它是字符串文字: 既然在字符串文本中,它为什么不按字面意思告诉我?这是巴贝尔的错误吗? 注意:这是一个自我提问和回答

  • 问题内容: 关于正则表达式有一个问题,试图回答我发现了另一个奇怪的事情。 这将打印YY。为什么?? 这会打印YXY 为什么勉强的正则表达式与“ X”字符不匹配?有,但为什么第一次不匹配三个符号和匹配的是两个,然后一个而不是三个?和第二个正则表达式仅匹配s而不匹配? 问题答案: 让我们依次考虑它们: 有两个匹配项: 在字符位置0处被匹配,并被替换为。 在字符位置1,空字符串被匹配,并被添加到输出中。

  • 我使用BufferedReader读取了一个txt文件。我将每一行添加到一个长字符串中,并将前面发布的代码应用于此。整个代码如下: 文本文件是一篇我想删除不是字母的所有内容(包括空白空间)的普通文章。摘录如下:“[16]自由软件基金会(FSF)成立于1985年,其本意是”自由“一词指的是发行的自由。”

  • 我正在尝试使用来选择性地替换字符串的一部分。我正在PowerShell ISE中编写和调试该函数。奇怪的是,运行替换代码会导致一台机器输出一个字符串,该字符串是匹配评估器脚本块的内容,而另一台机器会正确替换文本。我不知道这是可能的,也不知道为什么会发生这种情况。 给出这段代码(借用另一个stackoverflow的回答): 在一台机器上执行它会导致输出(PowerShell版本): 但在另一个页面

  • 问题内容: 有什么方法可以用捕获组的已修改内容替换正则表达式? 例: 我想用$ 1乘以3代替所有出现的情况。 编辑: 看起来好像出了点问题:( 如果我用 引发IllegalStateException:找不到匹配项 但 工作正常,但我不能更改$ 1 :( 问题答案: 要获得第一场比赛,请使用。之后,你可以用来引用此第一个匹配项,并将所有匹配项替换为第一个匹配值乘以3。 如果你想将每个匹配项替换为该

  • 问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪