当前位置: 首页 > 面试题库 >

需要定长正则表达式吗?

穆俊哲
2023-03-14
问题内容

我有这个正则表达式使用向前和向后的前瞻:

import re
re.compile("<!inc\((?=.*?\)!>)|(?<=<!inc\(.*?)\)!>")

我正在尝试将其从C#移植到Python,但始终收到错误

look-behind requires fixed-width pattern

是否有可能用Python重写而不会失去意义?

这个想法是为了匹配类似

<!inc(C:\My Documents\file.jpg)!>

更新资料

我正在使用环顾四周解析已修改的HTTP多部分文本

body = r"""------abc
Content-Disposition: form-data; name="upfile"; filename="file.txt"
Content-Type: text/plain

<!inc(C:\Temp\file.txt)!>
------abc
Content-Disposition: form-data; name="upfile2"; filename="pic.png"
Content-Type: image/png

<!inc(C:\Temp\pic.png)!>
------abc
Content-Disposition: form-data; name="note"

this is a note
------abc--
"""

multiparts = re.compile(...).split(body)

我想在进行拆分时只获取文件路径和其他文本,而不必删除开始和结束标签

简短的代码很重要,但是<!inc(如果它使正则表达式可行,我愿意更改格式


问题答案:

对于同一数组中的路径+“所有内容”,只需在开始标记和结束标记上进行分割:

import re
p = re.compile(r'''<!inc\(|\)!>''')
awesome = p.split(body)

您说您对结束标记很灵活,如果)!>可以在代码的其他地方出现,则可能需要考虑将结束标记更改为类似)!/inc>(或其他任何东西,只要它是唯一的)即可。

看到它运行。



 类似资料:
  • 我需要一个正则表达式来检查和删除< code > membership user < code > userName 中的特殊字符。 当我第一次将网站设置为测试版时,我没有考虑到特殊字符不是获取用户名的好方法,“在我的应用程序中”。 下面我有一段模板代码,写得不太正确,但是给了愿意帮助的人一个好的开始。 --我需要从用户名中删除所有特殊字符和空格,同时更新用户名。 当我说我所说的特殊字符~、`、!

  • 问题内容: 我有以下示例字符串 我只对 test6IAmInterestedIn 感兴趣,它位于第四个斜杠之后,可以包含3个字符,多个字母并以3个数字结尾,即。 我想在上述正则表达式中添加的内容是,我总是在匹配的第四个斜杠之后选择字符串。我该怎么办? 问题答案: 你可以试试这个演示 哪里 匹配包含正斜杠的4个块 捕捉您想要的图案

  • 我正在尝试构建一个正则表达式,它接受具有以下条件的域名: 允许DNS名称(仅允许连字符、句点和字母数字字符)最多255个字符 连字符只能出现在字母之间 应该以字母开头,以字母结尾。它至少有3个字符(字母和句点必填,连字符可选)。 周期前标签的长度应为63 可能的情况: a、 b.c a-a.b 不该通过的案子 a-b q wert q wert q wert q wert q wert q wer

  • 问题内容: 我运行一个发现有任何字* .sql文件后跟字后面的字。该select语句可以跨越很多行,并且可以包含制表符和换行符。 我已经尝试了以下几种变体: 但是,这将永远持续下去。谁能用正确的语法帮助我? 问题答案: 无需安装grep变体pcregrep,您可以使用grep进行多行搜索。 说明: 激活grep的perl- regexp (正则表达式的强大扩展) 禁止在行尾换行,用空字符代替。也就

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为