python - 对引号进行分组并忽略转义引号

标签 python regex

我目前正在使用 (['\"])(?:\\1|.*?\\1) 捕获引号组。

Text: "Hello", is it 'me youre looking for'?
# result: "Hello" (\1) and 'me youre looking for' (\2)

此外,我希望它忽略这些组内的转义引号(或全局,也可以)。

Text: "Hello", is it 'me you\'re looking for'?
# result: "Hello" (\1) and 'me you\'re looking for' (\2)

使用Python。我知道this questions有点相似。但是,我无法将其应用到我现有的正则表达式中。

谢谢,正则表达式怪胎!

最佳答案

这是一个模式:

(['"])(?:\\.|.)*?\1

Demo

一切都在(?:\\.|.)位中:

  • 匹配转义字符:\\. - 这可以处理 \"\\
  • 或任何其他(读取:未转义)字符:. - 您也可以在此处使用[^\\]

由于正则表达式引擎尝试从左到右交替,因此它会首先尝试匹配转义字符。

顺便说一句,在您的模式中,\1|.*?\1是多余的,您可以只写.*?\1

关于python - 对引号进行分组并忽略转义引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29457679/

相关文章:

python - 将数据插入 grakn 模式

python - 矩阵中的最小迭代次数,其中单元格值在单次迭代中被相邻单元格值的最大值替换

python - 上下文管理器严格适用于生成器吗?

python - 根据第二个参数对元组进行排序

java - 模式编译错误

python - 如何通过python获取xml文件中没有标签的文本

php - 匹配不区分大小写的带空格的精确短语

python - 如何使用 Python 从 Selenium 的重定向链中获取中间 URL?

php - 如何搜索在文本字符串中找到的子字符串并突出显示所有子字符串

java - 在 String 中多次出现