我使用此模式在解析器中匹配单引号字符串:
"'.+?'"
但是我需要正则表达式,它可以找到带有 postgres 的单引号字符串,例如 bied of single qoutes(加倍单个 qoutes)。需要匹配这样的东西:
"'first', 'sec''ond', 't''hi''rd'"
我想为以单引号开头和结尾的字符串找到最短的匹配项,因此上面的字符串意味着 3 个子字符串:
'first'
'sec''ond'
't''hi''rd'
对于您提供的模式,这应该有效:
'[\w']'
即匹配单引号后跟一个或多个非空格或单引号后跟最终单引号。
'(?:[^']|'{2}) '
单引号,后跟贪婪的出现:
后跟一个引号。
演示:https://regex101.com/r/zP2eK6/1
当然,< code > '(?:[^']|'')*'是这方面的工作正则表达式:它匹配后面跟有零个或多个字符的< code>'或后面跟有尾随< code>'的双< code >。
然而,为了提高效率,您可以使用展开循环技术来展开它。
'[^']*(?:''[^']*)*'
请参阅regex演示,并注意regexp查找所有匹配项所需的步骤。
正则表达式可以读为
'
-匹配'
[^']*
-然后零个或更多字符,而不是'
(?:“”[^']*)*
-然后零个或多个“”
序列,后跟零个或更多个'
'
-然后匹配后面的'
该正则表达式具有线性模式,涉及尽可能少的回溯。
只需注意:如果您添加一个前瞻性检查,在后面的'
后面是否有、
或字符串结尾,则仍然可以使正则表达式适用于当前场景:
'.+?'(?=,|$)
^^^^^^^
查看正则表达式演示。但是,它依赖于上下文,并且比展开的正则表达式效率低。
问题内容: 我知道已经有很多类似我的问题,但是我找不到在Java中有效的答案。所以我写了一个新问题。 我的文本文件内容如下: 我需要一个与双引号(或单引号)中的值匹配的正则表达式。此正则表达式必须支持转义的引号和转义的反斜杠。正则表达式必须与Java标准Pattern / Matcher类一起使用。 问题答案: 试试这个正则表达式: 并作为字符串文字:
我需要正则表达式的帮助,以匹配可能嵌入转义引号的引号字符串。 例如,给定字符串< code >“‘约翰的自行车’”。我开始使用的基本模式,,并扩展到使用lookbehind否定嵌入转义引号的大小写,但不起作用:< code > " '((? 有人知道吗? 字符串可以是一系列带引号的字符串,例如,“'约翰的自行车'、'玛丽的帽子'、'我的鞋子'”,我想分别标记每个引用的子字符串。
我面临一个挑战,要以以下格式匹配输入: 输入由key=value对组成。关键字以斜杠开头。值可以是数字或引号中的字符串。 该值可以选择性地包含转义引号,即引号后面跟着引号(“”)。这种转义引号应该被视为价值的一部分。不需要检查转义引号是否平衡(例如,由另一个转义引号结束)。 正则表达式应该匹配序列中给定的key=value部分,并且对于长输入(例如value是10000个字符)不应该中断。
问题内容: 我想构建一个简单的正则表达式,以涵盖带引号的字符串,包括其中的所有转义引号。例如, 显然,类似 不起作用,因为它与第一个转义的引号匹配。 什么是正确的版本? 我想对于其他转义字符,答案是相同的(只需替换相应的字符)。 顺便说一句,我知道“包罗万象”的正则表达式 但我会尽量避免使用它,因为毫不奇怪,它的运行速度要比更具体的设备慢。 问题答案: 所有其他答案的问题是,它们只适合最初的明显测
我有一个非常好的正则表达式,它从文本中选择引用: 但是我需要一个正则表达式,它从没有引号的文本中选择引号。 例如,我有: 鲸鱼包括八个现存的家族:“鲸豚科”(白鲸),“鲸豚科”(露脊鲸),“鲸豚科”(侏儒露脊鲸),“白鲸科”(灰鲸),“独角鲸科”(白鲸和独角鲸),“抹香鲸科”(抹香鲸)。。。 我需要在引号之间提取文本: 龟甲翅目,龟甲翅目,龟甲翅目,... 要提取括号之间的文本,我使用正则表达式:
我试图匹配所有包含引号的句子,独立于引号的长度或引号内的句子数量。 正如Alfe所指出的,得到一个完美的正则表达式可能是不可行的,但是如果可能的话,我想改进我正在使用的正则表达式。 现在我这样做是为了找到报价: 但是我想确保引用出现在一个句子中,然后捕捉整个句子。 我所说的一句话是指一段文字: 通常前面有空格 正如阿尔夫指出的那样,这并不能涵盖所有的句子,但如果我能满足这些条件,那就足够了。 例如