【问题标题】:Python - Regular expressions, removing content between two delimitersPython - 正则表达式,删除两个分隔符之间的内容
【发布时间】:2016-12-27 14:45:45
【问题描述】:

问题;我正在尝试删除输入字符串中每次出现的 /* */ 之间的字符串。

input = /* comment */ variable owner; /* comment */
output = variable owner;

目前我已经尝试过:

output = re.sub("//*[^]+*//", '', input)
output = re.sub("/*[^]+*//", '', input)

任何指导将不胜感激。

【问题讨论】:

  • 在 Python 中,[^] 是无效模式。
  • 如何指定 /* */ 之间的所有内容。我认为这是一种方法。

标签: python regex replace delimiter


【解决方案1】:

您不能在 Python 中使用 [^] 模式,它是一种仅用于匹配 任何 字符的 JavaScript 模式(如 Python 中的 (?s).)。

但是,您可以使用更好的多行注释匹配正则表达式:

/\*[^*]*\*+(?:[^/*][^*]*\*+)*/

this regex demo。它是 (?s)/\*.*?\*/ 的展开等效项,匹配 /*,然后是第一个 */ 之前的任何 0+ 个字符。

import re
s = '/* comment */ variable owner; /* comment */'
rx = r'/\*[^*]*\*+(?:[^/*][^*]*\*+)*/'
print(re.sub(rx, '', s))

Python demo

【讨论】:

    【解决方案2】:

    你可以试试这个:

    output = re.sub("/\*[^\*]+\*/", '', input)
    

    否则你可以试试这个:

    /\*[^\*]+\*/\s?
    

    摆脱额外的空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 2017-05-29
      相关资源
      最近更新 更多