繁体   English   中英

正则表达式从一个缩进/制表符到 Python 中的下一个缩进/制表符

[英]Regex to get from one indent/tab to the next indent/tab in Python

以下代码有效,特别是正则表达式,用于从一个缩进/制表符到分号 (;) 的下一个实例:

def find_matches(text):
    return capitalize(
        [
            m
            for m in re.findall(
                r"^[^0-9]\s+([^.;]+\s*)+[.;]+", normalize("NFKD", text), re.MULTILINE
            )
        ]
    )

有了这个,我可以用我的其余代码生成以下图像:

在此处输入图片说明

然而,我的问题在于我的正则表达式模式,因为我实际上更应该从第一个缩进/制表符到缩进/制表符的下一个实例,或者我想直到下一行没有缩进。 这是原始源字符串,它是从使用 docx 的 word 文档中获取的:

这是我的 docx 的 MediaUpload 文件的链接。 我选择链接它,因为我无法在这里正确显示实际格式。 此外,第二个文本框应该在整行中更长一点。

任何帮助是极大的赞赏。

你可以用

^[^\S\r\n].+(?:\n(?!\s).*)*

模式匹配:

  • ^字符串开始
  • [^\\S\\r\\n]匹配没有换行符(缩进)的空白字符
  • .+匹配 1+ 次除换行符以外的任何字符
  • (?:非捕获组作为一个整体重复
    • \\n匹配换行符
    • (?!\\s).*否定前瞻,断言不是空白字符并匹配行的其余部分
  • )*关闭非捕获组并可选择重复

正则表达式演示| Python 演示


如果匹配必须以 1 个或多个数字开头,后跟一个. 您可以先获取这些匹配项,然后使用第一个模式处理这些匹配项。

^\d+\..*(?:\n(?!\d+\.).*)*

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM