三重双引号和换行符之间的正则表达式提取



例如,我想解析带有三双引号之间的文本的python文件,并从该文本中制作html表。

例如这样的文本块

"""
Replaces greater than operator ('>') with 'NOT BETWEEN 0 AND #'
Replaces equals operator ('=') with 'BETWEEN # AND #'
Tested against:
* Microsoft SQL Server 2005
* MySQL 4, 5.0 and 5.5
* Oracle 10g
* PostgreSQL 8.3, 8.4, 9.0
Requirement:
* Microsoft Access
Notes:
* Useful to bypass weak and bespoke web application firewalls that
filter the greater than character
* The BETWEEN clause is SQL standard. Hence, this tamper script
should work against all (?) databases
>>> tamper('1 AND A > B--')
'1 AND A NOT BETWEEN 0 AND B--'
>>> tamper('1 AND A = B--')
'1 AND A BETWEEN B AND B--'
"""

Html 表格必须是包含 5 列的简单表格

  1. """n if new line is empty之间的所有内容
  2. Tested against:n if new line is emptyRequirement:n if new line is empty之间的所有内容
  3. Notes:n if new line is empty之间的所有内容
  4. >>>n之间的所有内容
  5. 4 column endn之间的所有内容

所以结果必须是:

  1. 将大于运算符 (">") 替换为"不在 0 和 # 之间" 将等于运算符 ('=') 替换为 'BETWEEN # AND #'
    • Microsoft SQL Server 2005

      • MySQL 4、5.0 和 5.5
      • 甲骨文 10g
      • PostgreSQL 8.3, 8.4, 9.0

      • Microsoft访问
    • 有助于绕过弱和定制的 Web 应用程序防火墙 筛选大于字符
    • BETWEEN 子句是 SQL 标准。因此,这个篡改脚本 应该适用于所有 (?) 数据库
  2. 篡改('1 和 A> B--') 篡改('1 和 A = B--')

  3. "1 和 A 不在 0 和 B 之间——" "1 和 A 在 B 和 B 之间——">

我可以使用哪种语法来提取它? 我将使用 VBScript.RegExp

Set fso = CreateObject("Scripting.FileSystemObject")
txt = fso.OpenTextFile("C:pathtoyour.py").ReadAll
Set re = New RegExp
re.Pattern = """([^""]*)"""
re.Global = True
For Each m In re.Execute(txt)
WScript.Echo m.SubMatches(0)
Next

你的问题很宽泛,所以我只概述一种处理这个问题的方法。否则我将不得不为你编写整个脚本,这不会发生。

  1. 提取文档引用之间的所有内容。使用这样的正则表达式来提取文档引号之间的文本:

    Set re1 = New RegExp
    re1.Pattern = """""""([sS]*?)"""""""
    For Each m In re1.Execute(txt)
    docstr = m.SubMatches(0)
    Next
    

    请注意,如果您的文件中有超过 1 个文档字符串并希望处理所有文档字符串,则需要将re.Global设置为True。否则,您将只获得第一场比赛。

  2. 使用第二个正则表达式删除前导和尾随空格:

    Set re2 = New RegExp
    re2.Pattern = "^s*|s*$"
    re2.Global  = True  'find all matches
    docstr = re2.Replace(docstr, "")
    

    您不能为此使用Trim,因为该函数仅处理空格,而不处理其他空格。

  3. 要么在 2+ 个连续换行符处拆分字符串以获取文档部分,要么使用另一个正则表达式提取它们:

    Set re3 = New RegExp
    re3.Pattern = "([sS]*?)rnrn" +
    "Tested against:rn([sS]*?)rnrn" +
    ...
    For Each m In re3.Execute(txt)
    descr  = m.SubMatches(0)
    tested = m.SubMatches(1)
    ...
    Next
    

继续细分这些部分,直到获得要显示的元素。然后从这些元素构建 HTML。

最新更新