【问题标题】:Python regex to avoid reading a comma after a whitespacePython 正则表达式避免在空格后读取逗号
【发布时间】:2023-02-21 00:25:09
【问题描述】:

我想编写一个正则表达式来检测以下字符串中的所有逗号,但应排除字典数据中“{ 和}”之间的逗号 这是字符串:

CREATED,860,"{\"node-id\":\"OWBRDMNE7\",\"change-type\":\"CREATED\",\"additional-info\":{\"response-message\":\"OTDR Scan operation completed in NE. File transfer to the Repository failed due to Repository error ,details is::Unable to create directory\",\"resource-type\":\"degree\",\"resource-name\":\"1\",\"status\":\"Failure\"},\"object-type\":\"otdr\",\"internalgeneratedepoch\":1676483708151000,\"topic-name\":\"OTDR\",\"object-id\":\"OWBRDMNE7_1_otdr_object\",\"internaleventid\":860}",1676483708151000,OWBRDMNE7,OWBRDMNE7_1_otdr_object,otdr

它适用于除一种情况以外的所有情况。逗号前有一个空格,但不排除(此处打印了其中的一部分): “由于存储库错误而失败,详细信息是” 但是我无法弄清楚如何忽略空白后面的这个逗号。破解此问题的任何线索都会有很大帮助。

我试过这个正则表达式,它适用于所有其他逗号:

,(?![^()]+\))(?=[a-zA-Z0-9"\/,(])

【问题讨论】:

  • 欢迎来到堆栈溢出。 "This is the String:" 对于这个字符串,结果应该是什么,为什么?该字符串实际上是否包含这些反斜杠,或者您只是将其显示为代码语法?
  • 这是一些转义的 JSON 字符串吗?
  • @Jan 是它的 json 字符串
  • "{\"node-id\":\"OWBRDMNE7\",\"change-type\":\"CREATED\",\"additional-info\":{\"response-message\":\"OTDR扫描操作在 NE 中完成。由于存储库错误,文件传输到存储库失败,详细信息是::无法创建目录\",\"resource-type\":\"degree\",\"resource-name\":\"1\", \"status\":\"Failure\"},\"object-type\":\"otdr\",\"internalgeneratedepoch\":1676483708151000,\"topic-name\":\"OTDR\",\ "object-id\":\"OWBRDMNE7_1_otdr_object\",\"internaleventid\":860}" 要排除此字符串中的所有逗号,但不会排除此字符串中空格后的逗号

标签: python regex


【解决方案1】:

可以使用

{[^{}]+}(*SKIP)(*FAIL)|,

使用 regex 模块(参见 a demo on regex101.com),但我不推荐它。最好考虑使用您已经拥有的东西 - 可以在上游序列化的结构化字符串(在您的情况下为 JSON)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多