Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式要点和多行匹配_Python_Regex - Fatal编程技术网

Python正则表达式要点和多行匹配

Python正则表达式要点和多行匹配,python,regex,Python,Regex,想要匹配两个单词或短语之间的内容,其中有一个要点,在python中有多行,并且适用于单词开头和结尾之间的每个变体。不知道用于项目符号的标识符,也不知道用于匹配所有内容(包括换行符)的标识符。例如,尝试匹配: Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World 在 其中该字符串位于多行之上。我知道它可能不在球场上,但这是我到目前为止所拥有的,显然它不起作用 Answer = re

想要匹配两个单词或短语之间的内容,其中有一个要点,在python中有多行,并且适用于单词开头和结尾之间的每个变体。不知道用于项目符号的标识符,也不知道用于匹配所有内容(包括换行符)的标识符。例如,尝试匹配:

Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World 

其中该字符串位于多行之上。我知道它可能不在球场上,但这是我到目前为止所拥有的,显然它不起作用

Answer = re.findall("(?<=qweqrqr)(.*\n?)/s(?=fdsfdas)"), hello_big_old_world)
print(Answer)

Answer=re.findall((?要匹配包括换行符在内的所有字符,您仍然使用
字符,但将
flags=re.dotal
传递给函数,例如
re.findall

您可以使用

hello_big_old_world = "qweqrqr  Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World fdsfdas"
print(re.findall(r'qweqrqr([^\u2022]*\u2022.*?)fdsfdas', hello_big_old_world, re.S))

请注意,如果在括号组的两端添加
\s*
(=0+空格字符),则可以使用
而不是Unicode字符表示法,还可以从捕获的文本中删除空格:

re.findall(r'qweqrqr\s*([^•]*•.*?)\s*fdsfdas', hello_big_old_world, re.S)
它应该与Python 2兼容

详细信息

  • qweqrqr
    -匹配右分隔符
  • ([^\u2022]*\u2022.*?
    /
    ([^•]*•.*?)
    -捕获到组1中(返回的字符串带有
    re.findall
    • [^\u2022]*
      /
      [^•]*
      -除项目符号以外的任何字符
    • \u2022
      /
      -要点
    • *?
      -任何0+字符(包括由于
      re.S
      (=
      re.DOTALL
      )标志而产生的换行符)尽可能少(由于惰性量词
      *?
  • fdsfdas
    -匹配左侧分隔符

您可以使用您的
regex
,只需稍作更改:

  • /s
    应该是
    \s

  • 使用
    re.DOTALL
    匹配中间有换行符的情况

工作代码:

import re

hello_big_old_world = 'qweqrqr  Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World fdsfdas'

Answer = re.findall("(?<=qweqrqr)(.*\n?)\s(?=fdsfdas)", hello_big_old_world, re.DOTALL)
print(Answer)

# [' Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World']                        
重新导入
hello\u big\u old\u world='QWEQRQRQR hello•world hello•world hello•world hello•world hello•world hello•world hello•world fdsfdas'
Answer=re.findall(“(?Try
re.findall(r'qweqrqr([^\u2022]*\u2022.*?)fdsfdas,”,hello_big_old_world,re.S)
import re

hello_big_old_world = 'qweqrqr  Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World fdsfdas'

Answer = re.findall("(?<=qweqrqr)(.*\n?)\s(?=fdsfdas)", hello_big_old_world, re.DOTALL)
print(Answer)

# [' Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World']