当前位置: 首页 > 面试题库 >

Python 3正则表达式查找多行注释

江嘉悦
2023-03-14
问题内容

我正在尝试使用Python 3中的正则表达式在PHP源代码中查找注释块。PHP注释采用以下格式:

/**
 * This is a very short block comment
 */

现在我想出了以下正则表达式:

'/\*\*[.]+?\*/'

我认为-与DOTALL标志结合使用-应该可以,但不能。它什么也没找到。奇怪的是,当我删除结尾的斜杠时,如下所示:

'/\*\*[.]+?\*'

然后找到以下字符串:

/**\n\t*

我不知道为什么正则表达式找不到星号后跟斜线…我检查了我要仔细检查的文件,以检查我的注释中没有错字(我没有)。另外,在正则表达式中斜杠不是特殊字符,因此我不必逃脱它。(我尝试过,但没有帮助。)

谁能告诉我我的正则表达式怎么了?:)

顺便说一句,我也遇到了这个!有人尝试在Java中执行相同操作的线程。最终的胜利答案以现在的方式完成了他的正则表达式,所以我一无所知:(这可能是Python正则表达式中的错误,还是我完全错过了一些东西?

任何帮助深表感谢!:D


问题答案:

您可以使用该re.DOTALL标志使.字符与换行符匹配:

re.compile(r'/\*\*.+?\*/', re.DOTALL)

(请注意,PHP块注释可以以开头/*,而不仅仅是/**。)。



 类似资料:
  • 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。 re 模块也提供了与这些方法功能完全一致的

  • 在这个问题的背景下,我想做以下修改: 查找: funcA(参数0,参数1,参数2,参数3); 替换: funcA可以有除param0之外的任意数量的参数。怎么做呢?为简单起见,忽略基本情况,即当传递给funcA的参数仅为param0时。 funcA是: 职能是: 编辑: 参数(param1,param2..)只是包含字母的字符串。

  • 问题内容: 我需要使用批注+正则表达式对电子邮件进行验证。我尝试使用以下内容: 但是,当电子邮件字段中的电子邮件地址不正确时,我不知道如何打印错误消息。有任何想法吗? 问题答案: 首先,您应该在注释中添加一个属性。假设您的邮件变量是某个类User的一部分: 然后,您应该定义一个验证器: 然后找到验证错误。

  • 问题内容: 我对多行字符串的replaceAll有问题: 以上适用于testWorks,但不适用于testIllegal !?为什么会这样,我该如何克服呢?我需要替换跨越多行的注释/ * … * /。 问题答案: 您需要使用标志来表示点应与换行符匹配。例如 或者使用例如在模式中指定标志

  • 问题内容: 我想解析一个文件,并且想使用php和regex剥离: 空白或空行 单行注释 多行注释 基本上我想删除任何包含 或多行注释 如果可能的话,另一个正则表达式检查行是否为空(删除空行) 那可能吗?有人可以向我发布一个正则表达式吗? 非常感谢。 问题答案:

  • 本文向大家介绍正则表达式速查表,包括了正则表达式速查表的使用技巧和注意事项,需要的朋友参考一下 字符 字符类 预定义字符类 POSIX 字符类(仅 US-ASCII) java.lang.Character 类(简单的 java 字符类型) Unicode 块和类别的类 边界匹配器 Greedy 数量词 Reluctant 数量词 Possessive 数量词 Logical 运算符 Back 引

  • 问题内容: 我正在使用python和pexpect从某些cisco设备中收集一些信息,并且在RE上成功地提取了讨厌的小物件。恐怕我已经撞墙了。一些开关堆叠在一起,我已经在脚本中确定了这一点,并使用了一个单独的例程来解析数据。如果将交换机堆叠在一起,则会看到以下内容(从推杆输出中提取) 当我遇到此问题时,我需要提取4表中每个开关的编号和型号(sw可以忽略,但是可以有1到9个开关)这是多行事物使我如愿

  • 如何提取所有字符(包括换行符),直到第一次出现单词序列?例如以下输入: 输入文本: 和序列我想从中提取文本到第二行中第一次出现的。 输出必须为- 我整个上午都在努力。我可以编写表达式来提取所有字符,直到遇到特定字符,但如果我使用这样的表达式: 跨换行符不匹配。