Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式-转换字符串_Python_Regex - Fatal编程技术网

Python正则表达式-转换字符串

Python正则表达式-转换字符串,python,regex,Python,Regex,我有以下字符串: ref:_00D30jPy._50038vQl5C:ref 并希望将以下输出字符串形式化: 5003800000vQl5C 所需的正则表达式操作包括: 删除所有前导字符,直到数字“5” 从第五位开始加5个零 删除结束语“:ref” 我最初使用以下正则表达式来匹配整个字符串: (参考号:(\S+):参考号) 如何修改Python正则表达式以实现上述功能 此任务不需要正则表达式。它可以更简单地使用字符串切片来实现 如果输入字符串保持相同的格式和长度,您只需执行以下操作: s

我有以下字符串:

ref:_00D30jPy._50038vQl5C:ref
并希望将以下输出字符串形式化:

5003800000vQl5C
所需的正则表达式操作包括:

  • 删除所有前导字符,直到数字“5”
  • 从第五位开始加5个零
  • 删除结束语“:ref”
我最初使用以下正则表达式来匹配整个字符串: (参考号:(\S+):参考号)


如何修改Python正则表达式以实现上述功能

此任务不需要正则表达式。它可以更简单地使用字符串切片来实现

如果输入字符串保持相同的格式和长度,您只需执行以下操作:

s = 'ref:_00D30jPy._50038vQl5C:ref'
new = '{}00000{}'.format(s[15:20], s[20:-4])
如果存在一些变化,则搜索字符串中的第一个
'5'
,并从那里开始切片:

start = s.index('5')
new = '{}00000{}'.format(s[start:start+5], s[start+5:-4])

此任务不需要正则表达式。它可以更简单地使用字符串切片来实现

如果输入字符串保持相同的格式和长度,您只需执行以下操作:

s = 'ref:_00D30jPy._50038vQl5C:ref'
new = '{}00000{}'.format(s[15:20], s[20:-4])
如果存在一些变化,则搜索字符串中的第一个
'5'
,并从那里开始切片:

start = s.index('5')
new = '{}00000{}'.format(s[start:start+5], s[start+5:-4])
使用:

重新导入
s='ref:_00D30jPy._50038vQl5C:ref'
result=re.sub(r'^[^5]*(5.{4})(**?:ref$',r'\g00000\g',s,0,re.MULTILINE)
打印(结果)
输出:

5003800000vQl5C

说明:

  • ^[^5]*
    :从开头匹配除5以外的字符
  • (5.{4})
    :捕获组1的前5个字符
  • (.*):ref$
    :捕获组2的剩余部分,但末尾的
    :ref
    除外
  • \g00000\g
    :将整行替换为
    \g00000\g
    ,其中
    \g
    \g
    分别由第1组和第2组替换
具有与Python 2兼容的代码生成器和详细说明。

使用:

重新导入
s='ref:_00D30jPy._50038vQl5C:ref'
result=re.sub(r'^[^5]*(5.{4})(**?:ref$',r'\g00000\g',s,0,re.MULTILINE)
打印(结果)
输出:

5003800000vQl5C

说明:

  • ^[^5]*
    :从开头匹配除5以外的字符
  • (5.{4})
    :捕获组1的前5个字符
  • (.*):ref$
    :捕获组2的剩余部分,但末尾的
    :ref
    除外
  • \g00000\g
    :将整行替换为
    \g00000\g
    ,其中
    \g
    \g
    分别由第1组和第2组替换
有一个与Python 2兼容的代码生成器和详细说明