当前位置: 首页 > 知识库问答 >
问题:

Python正则表达式,用于匹配带转义单引号的带引号字符串

金坚
2023-03-14

我使用此模式在解析器中匹配单引号字符串:

"'.+?'"

但是我需要正则表达式,它可以找到带有 postgres 的单引号字符串,例如 bied of single qoutes(加倍单个 qoutes)。需要匹配这样的东西:

"'first', 'sec''ond', 't''hi''rd'"

我想为以单引号开头和结尾的字符串找到最短的匹配项,因此上面的字符串意味着 3 个子字符串:

'first'
'sec''ond'
't''hi''rd'

共有3个答案

傅彬
2023-03-14

对于您提供的模式,这应该有效:

'[\w']'

即匹配单引号后跟一个或多个非空格或单引号后跟最终单引号。

易祯
2023-03-14

'(?:[^']|'{2}) '

单引号,后跟贪婪的出现:

  • 不是单引号的字符
  • 或者两个单引号一起

后跟一个引号。

演示:https://regex101.com/r/zP2eK6/1

金高飞
2023-03-14

当然,< code > '(?:[^']|'')*'是这方面的工作正则表达式:它匹配后面跟有零个或多个字符的< code>'或后面跟有尾随< code>'的双< code >。

然而,为了提高效率,您可以使用展开循环技术来展开它。

'[^']*(?:''[^']*)*'

请参阅regex演示,并注意regexp查找所有匹配项所需的步骤。

正则表达式可以读为

  • '-匹配'
  • [^']*-然后零个或更多字符,而不是'
  • (?:“”[^']*)*-然后零个或多个“”序列,后跟零个或更多个'
  • 以外的字符
  • '-然后匹配后面的'

该正则表达式具有线性模式,涉及尽可能少的回溯

只需注意:如果您添加一个前瞻性检查,在后面的'后面是否有或字符串结尾,则仍然可以使正则表达式适用于当前场景:

'.+?'(?=,|$)
     ^^^^^^^

查看正则表达式演示。但是,它依赖于上下文,并且比展开的正则表达式效率低。

 类似资料:
  • 问题内容: 我知道已经有很多类似我的问题,但是我找不到在Java中有效的答案。所以我写了一个新问题。 我的文本文件内容如下: 我需要一个与双引号(或单引号)中的值匹配的正则表达式。此正则表达式必须支持转义的引号和转义的反斜杠。正则表达式必须与Java标准Pattern / Matcher类一起使用。 问题答案: 试试这个正则表达式: 并作为字符串文字:

  • 我需要正则表达式的帮助,以匹配可能嵌入转义引号的引号字符串。 例如,给定字符串< code >“‘约翰的自行车’”。我开始使用的基本模式,,并扩展到使用lookbehind否定嵌入转义引号的大小写,但不起作用:< code > " '((? 有人知道吗? 字符串可以是一系列带引号的字符串,例如,“'约翰的自行车'、'玛丽的帽子'、'我的鞋子'”,我想分别标记每个引用的子字符串。

  • 我面临一个挑战,要以以下格式匹配输入: 输入由key=value对组成。关键字以斜杠开头。值可以是数字或引号中的字符串。 该值可以选择性地包含转义引号,即引号后面跟着引号(“”)。这种转义引号应该被视为价值的一部分。不需要检查转义引号是否平衡(例如,由另一个转义引号结束)。 正则表达式应该匹配序列中给定的key=value部分,并且对于长输入(例如value是10000个字符)不应该中断。

  • 问题内容: 我想构建一个简单的正则表达式,以涵盖带引号的字符串,包括其中的所有转义引号。例如, 显然,类似 不起作用,因为它与第一个转义的引号匹配。 什么是正确的版本? 我想对于其他转义字符,答案是相同的(只需替换相应的字符)。 顺便说一句,我知道“包罗万象”的正则表达式 但我会尽量避免使用它,因为毫不奇怪,它的运行速度要比更具体的设备慢。 问题答案: 所有其他答案的问题是,它们只适合最初的明显测

  • 我有一个非常好的正则表达式,它从文本中选择引用: 但是我需要一个正则表达式,它从没有引号的文本中选择引号。 例如,我有: 鲸鱼包括八个现存的家族:“鲸豚科”(白鲸),“鲸豚科”(露脊鲸),“鲸豚科”(侏儒露脊鲸),“白鲸科”(灰鲸),“独角鲸科”(白鲸和独角鲸),“抹香鲸科”(抹香鲸)。。。 我需要在引号之间提取文本: 龟甲翅目,龟甲翅目,龟甲翅目,... 要提取括号之间的文本,我使用正则表达式:

  • 我试图匹配所有包含引号的句子,独立于引号的长度或引号内的句子数量。 正如Alfe所指出的,得到一个完美的正则表达式可能是不可行的,但是如果可能的话,我想改进我正在使用的正则表达式。 现在我这样做是为了找到报价: 但是我想确保引用出现在一个句子中,然后捕捉整个句子。 我所说的一句话是指一段文字: 通常前面有空格 正如阿尔夫指出的那样,这并不能涵盖所有的句子,但如果我能满足这些条件,那就足够了。 例如