Python regex找不到解析减价Python代码的模式,而regex101找到了[duplicate]

zrfyljdw  于 2023-01-14  发布在  Python
关注(0)|答案(2)|浏览(122)

此问题在此处已有答案

Regular expression works on regex101.com, but not on prod(1个答案)
昨天关门了。
在一个markdown文件中,我希望将python代码提取到

```python 
...
```(end)

使用正则表达式和Python。而Python代码

import re
text = 'We want to examine the python code\n\n```python\ndef halloworld():\n\tfor item in range(10):\n\t\tprint("Hello")\n``` and have no bad intention when we want to parse it'
findpythoncodepattern = re.compile(r'```python.+```',re.MULTILINE)
for item in findpythoncodepattern.finditer(text):
    print(item)

没有找到结果(即使我添加或删除re.MULTILINE标志),regex似乎不是问题所在,因为Regex101找到了它。
当我将text修改为rawtext ' '-〉r' '时,它会找到一些东西,但不是完全匹配。

m3eecexj

m3eecexj1#

尝试使用flags = re.S(又名re.DOTALL):

import re

text = 'We want to examine the python code\n\n```python\ndef halloworld():\n\tfor item in range(10):\n\t\tprint("Hello")\n``` and have no bad intention when we want to parse it'

findpythoncodepattern = re.compile(r"```python.+```", flags=re.S)

for item in findpythoncodepattern.finditer(text):
    print(item.group(0))

图纸:

```python
    def halloworld():
            for item in range(10):
                    print("Hello")
    ```
lmvvr0a8

lmvvr0a82#

在markdown文件中,我想提取python代码
要只提取代码,请使用(?<=```python)([\s\S]+)(?=```)模式。

import re

text = 'We want to examine the python code\n\n```python\ndef halloworld():\n\tfor item in range(10):\n\t\tprint("Hello")\n``` and have no bad intention when we want to parse it'

pattern = re.compile(r'(?<=```python)([\s\S]+)(?=```)')
for item in pattern.findall(text):
    print(item)

# def halloworld():
#    for item in range(10):
#        print("Hello")
  • 注意:* [\s\S]与带有re.S标志的.相同。

相关问题