gpt4 book ai didi

Python sed 正则表达式匹配

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

我正在尝试使用re.sub()在我的 Python 脚本中删除一些字符串。

我使用的 sed 命令是(在 Linux 上):

回显“helloworld-5b5cf484-g582f”| sed 's/-[a-z0-9]\{5\}$//' | sed 's/-[0-9]\{10\}$//' | sed 's/-[a-z0-9]\{8,10\}$//'

这将输出helloworld

现在,我尝试使用 Python 对第一个 sed 组执行此操作:

newstring = re.sub(r'(s/-[a-z0-9]\{5\}$//)', r'\1', 'helloworld-5b5cf484-g582f')

但它只输出副本,即 helloworld-5b5cf484-g582f

如何执行这样的 sed 命令?

编辑:

我的问题不是关于我的正则表达式。输入字符串比我作为示例提供的字符串更复杂。问题是关于如何正确使用 re.sub() 和我使用的正则表达式:)

最佳答案

sed s/-[a-z0-9]\{5\}$//命令翻译为re.sub(r'-[a-z0-9]{5}$', '', s) .

注意:

  • BRE POSIX 间隔量词的编写没有转义,\{5\} => {5}
  • s/<pattern>/<repl>/表示替换 <pattern><repl> ,等于re.sub('<pattern>', '<repl>', s, 1) (由于 sed 命令中没有 g 修饰符,1 被传递到 re.sub 以仅替换第一次出现的情况)。

修饰符作为选项或标志传递,在 re.sub 中,例如re.sub(r'-[a-z0-9]{5}$', '', s, flags=re.I) ( re.I 是不区分大小写的修饰符)。介意没有必要使用g修改为 re.sub默认情况下替换所有出现的情况。

您可以在 Python re documentation 中了解有关 Python 正则表达式语法的更多信息。 .

关于Python sed 正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51474751/

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