gpt4 book ai didi

python - 我对这种消极的前瞻做错了什么?过滤掉正则表达式中的某些数字

转载 作者:行者123 更新时间:2023-12-01 03:38:35 26 4
gpt4 key购买 nike

我有一大段由软件生成的代码。每条指令都有一个标识符号,我只需修改某些数字:

grr.add(new GenericRuleResult(RULEX_RULES.get(String.valueOf(11)), new Result(0,Boolean.FALSE,"ROSSO")));
grr.add(new GenericRuleResult(RULEX_RULES.get(String.valueOf(12)), new Result(0,Boolean.FALSE,"£££")));
etc...

现在,我正在使用 SublimeText3 使用此正则表达式快速更改所有错误行:

Of\((11|14|19|20|21|27|28|31)\)\), new Result\(

上面的正则表达式允许我在包含这些数字的每一行中放置“ROSSO”(红色)。现在我必须在剩余的行中输入“VERDE”(绿色)。我的想法是在正则表达式中添加 ?! 来查找不包含这些数字的所有行。

来自网站Regex101我得到了正则表达式的描述:

Of matches the characters Of literally (case sensitive)
\( matches the character ( literally (case sensitive)
Negative Lookahead (?!11|14|19|20|21|27|28|31)
Assert that the Regex below does not match
1st Alternative 11
etc...

那么为什么我找不到包含 12、13、14 等的行?

编辑:实际正则表达式:Of\((?!11|14|19|20|21|27|28|31)\)\),新结果\(

最佳答案

您的问题是您假设否定前瞻会更改光标位置,但事实并非如此。

也就是说,(?!xy) 形式的否定前瞻仅验证接下来的两个字符不是xy。然后它不会吞下文本中的两个字符。顾名思义,它只是从您所在的位置向前看,而不是向前移动!

因此,如果您希望匹配该断言之外的更多内容,您必须:

  • 否定地断言它不是xy
  • 然后使用这两个字符,无论它们是什么;
  • 然后继续比赛。

所以尝试这样的事情:

Of\((?!11|14|19|20|21|27|28|31)..\)\), new Result\(

关于python - 我对这种消极的前瞻做错了什么?过滤掉正则表达式中的某些数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40017590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com