【问题标题】:Deny character if preceded by another specific character如果前面有另一个特定字符,则拒绝字符
【发布时间】:2020-07-07 18:40:07
【问题描述】:

我有一个关于 python 的问题,特别是关于正则表达式的问题。

假设我有以下规则:

[^\$\?\¡]*

也就是说,允许除少数几个字符之外的所有字符。

我需要在该规则中添加类似于以下的条件: 仅当某个字符前面有另一个特定字符时才拒绝该字符。

如果前面有 = 字符,则示例不允许使用;

something;=somethingElse -> something; somethingElse
something=somethingElse -> something=somethingElse

问题是,当我尝试在方括号内使用lookbehind 功能时,它无法按预期工作。

[(?<!\;)\=\$\?\¡]*

有没有办法写出这样的规则?我找了好几个地方,但都没有找到类似的东西,肯定有东西,但在我寻找的方式中,什么都没有出现。

【问题讨论】:

  • 你能举几个例子来说明你的期望吗?您已将lookbehind 放在字符类中,因此它将尝试匹配表达式的各个字符。

标签: python python-3.x regex regex-lookarounds python-re


【解决方案1】:

字符类匹配单个字符,不要在那里添加lookbehinds。使用交替:

(?:[^$?¡=]|(?<!;)=)+

proof。表达式查找除 $?¡== 之外的一个或多个字符,其前面没有分号。

【讨论】:

  • 我不明白为什么投反对票,因为我在帖子末尾澄清了所有内容,但感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2021-11-17
  • 2021-03-04
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多