regex 一个正则表达式,带有要排除的模式,但模式本身包含一个我们要包含的子字符串

9jyewag0  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(97)

对于字符串:.test[?(@.foo=="bazz")].boo,使用Python,我想根据.[?]来获得这个字符串的匹配,但忽略@.
我已经设法弄清楚如何匹配所有分割的模式,但似乎不能弄清楚忽略规则。
\[\?\(|\.|]
目前为止,我对忽略规则的最好尝试是:^((?!@\.).)*$|\[\?\(|\.|]
突出显示的子字符串匹配的预期结果:.测试[?(@.foo==“bazz”)] . boo

wgeznvg7

wgeznvg71#

您的模式^((?!@\.).)*$|\[\?\(|\.|]使用了4个备选项,其中^((?!@\.).)*$部分匹配不包含@.的行
如果你想匹配一个没有@字符的点,你可以使用一个简化的模式,使用3个替代方案:

\[\?|\]|(?<!@)\.
  • \[\?匹配[?
  • |
  • ]匹配]字符
  • |
  • (?<!@)\.匹配一个点,使用负向后查找声明它前面没有@字符

参见regex demo

相关问题