假设我有以下 Python 字符串
str = """
....
Dummyline
Start of matching
+----------+----------------------------+
+ test + 1234 +
+ test2 + 5678 +
+----------+----------------------------+
Finish above. Do not match this
+----------+----------------------------+
+ dummy1 + 00000000000 +
+ dummy2 + 12345678910 +
+----------+----------------------------+
"""
Run Code Online (Sandbox Code Playgroud)
我想匹配第一个表中的所有内容。我可以使用从开始匹配的正则表达式
"Start"
Run Code Online (Sandbox Code Playgroud)
并匹配所有内容,直到找到双换行符
"Start"
Run Code Online (Sandbox Code Playgroud)
我在另一篇 stackoverflow 帖子中找到了一些有关如何执行此操作的提示(如何在正则表达式中匹配“直到此字符序列的任何内容”?),但它似乎不适用于双换行符情况。
我想到了下面的代码
\n\n
Run Code Online (Sandbox Code Playgroud)
基本上在哪里
pattern = re.compile(r"Start[^\n\n]")
matches = pattern.finditer(str)
Run Code Online (Sandbox Code Playgroud)
表示匹配所有内容,直到找到字符 x。但这仅适用于字符,不适用于字符串(在本例中为“\n\n”)
有人对此有什么想法吗?
The*_*ird 11
您可以匹配Start 直到行尾,然后使用负先行匹配以换行符开头且后面不紧接着换行符的所有行(?!
^Start .*(?:\r?\n(?!\r?\n).*)*
Run Code Online (Sandbox Code Playgroud)
解释
^Start .*Start 从字符串开头匹配^0+ 次任何字符(换行符除外)(?:非捕获组
\r?\n匹配换行符(?!\r?\n)负向前瞻,断言直接右侧的内容不是换行符.*匹配 0+ 次除换行符之外的任何字符)*关闭非捕获组并重复0+次以获取所有行| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |