gpt4 book ai didi

python - python 中的正则表达式似乎不像我期望的那样工作

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:24 25 4
gpt4 key购买 nike

我的代码似乎没有像预期的那样工作:

x = "engniu4nwi5u"
print re.sub(r"\D(\d)\D", r"\1abc", x)

我想要的输出是:engniuabcnwiabcu
但是实际给出的输出是:engni4abcw5abc

最佳答案

您将错误的字符分组,它必须写成

>>> x = "engniu4nwi5u"
>>> re.sub(r"(\D)\d(\D)", r"\1abc\2", x)
'engniuabcnwiabcu'
  • (\D)匹配一个非数字并在 \1 中捕获它
  • \d匹配数字
  • (\D)匹配以下数字。捕获 \2

如何匹配?

engniu4nwi5u
|
\D => \1

engniu4nwi5u
|
\d

engniu4nwi5u
|
\D => \2

另一种解决方案

您也可以使用环顾四周来执行与

相同的操作
>>> x = "engniu4nwi5u"
>>> re.sub(r"(?<=\D)\d(?=\D)", r"abc", x)
'engniuabcnwiabcu'
  • (?<=\D)看看断言的背后。检查数字前面是否有非数字。但没有被捕获
  • \d匹配数字
  • (?=\D)向前看断言。检查数字后是否跟有非数字。也没有被捕获。

关于python - python 中的正则表达式似乎不像我期望的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30149776/

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