【问题标题】:Search and Replace using regex in python在 python 中使用正则表达式搜索和替换
【发布时间】:2018-02-12 04:40:17
【问题描述】:
str = '{"name": "John", "company": "AB"C corp", "id": "12g: "123 12-12"}'

B"C 替换为空字符串''

g: "1 替换为空字符串''

必需的字符串

str = '{"name": "John", "company": "A corp", "id": "1223 12-12"}'

这个的正则表达式是什么?

试过

import re

str = re.sub(r'^[a-zA-Z0-9: "0-9]$', "", str)

例子:

Valid: '"name": "John"'
Invalid: '"nam"e": "Jo"hn"'

Valid: '"id": "12A"'
Invalid: 'id: "12A"'

【问题讨论】:

  • 正则表达式?为什么不str.replace('B"C', '').replace('g: "1', '')
  • 它可以是任何字母/数字,而不是 B"C 或 g:"1。因此正则表达式
  • 您能准确地说明您的要求吗? 什么可以是任何字母/数字?无法判断您是否想要 \w: "\w\w: "\d[a-z]: "\d 或其他 50 个可能的正则表达式之一。
  • 这样的事情适用于您的案例[A-Za-z][^"]*"\w,但正如@Aran-Fey 所说,要求并不明确
  • 示例:有效:'"name":"John"' 无效:'"nam"e":"Jo"hn"' 有效:'"id":"12A"' 无效:'编号:“12A”'

标签: python regex


【解决方案1】:

你可以试试这个!

检查您是否有一个字符(冒号或空格或两者兼有),后跟 " 和 \w(字符或数字)。

>>> s
'{"name": "John", "company": "AB"C corp", "id": "12g: "123 12-12"}'
>>> re.sub('\w[: ]*"\w','',s)
'{"name": "John", "company": "A corp", "id": "1223 12-12"}'

【讨论】:

    【解决方案2】:

    您的意思是\W"\W\w: "\d 是您唯一担心的情况吗?

    然后试试这个:

    str = re.sub(r'([a-zA-Z](\: )?"[A-Z0-9])', "", str)
    

    【讨论】:

    • 1.无需捕获第 2 组。无需转义 :
    • 如何去除双引号内的双引号。例如 "{"name": "John"}" 需要变成 "{'name': 'John'}"
    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2011-04-15
    • 2013-11-30
    相关资源
    最近更新 更多