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

Java正则表达式,用于将带引号的字符串与嵌入的转义引号匹配

诸葛砚文
2023-03-14

我需要正则表达式的帮助,以匹配可能嵌入转义引号的引号字符串。

例如,给定字符串< code >“‘约翰的自行车’”。我开始使用的基本模式,"'[^']*'",并扩展到使用lookbehind否定嵌入转义引号的大小写,但不起作用:< code > " '((?

有人知道吗?

字符串可以是一系列带引号的字符串,例如,“'约翰的自行车'、'玛丽的帽子'、'我的鞋子'”,我想分别标记每个引用的子字符串。

共有1个答案

阎元徽
2023-03-14

您可以接受引号之间的任何字符

    < li >以< code>\ 开头 < li >不是< code>'。

所以你的正则表达式可以看起来像:

'(\\.|[^'])*'

在Java中应该类似于< code>"'(\\\\。|[^'])*'"(要在regex中创建< code>\文字,我们需要像< code>\\一样对其进行转义,但同样的规则也适用于字符串文字,因此我们需要再次对这两个< code>\进行转义,这最终得到< code > " \ \ " )

基于您的示例的演示:

String input = "'John\\'s bike', 'Mary\\'s hat', 'my shoes'";
Pattern p = Pattern.compile("'(\\\\.|[^'])*'");
Matcher m = p.matcher(input);
while(m.find()){
    System.out.println(m.group());
}

输出:

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

  • 我使用此模式在解析器中匹配单引号字符串: 但是我需要正则表达式,它可以找到带有 postgres 的单引号字符串,例如 bied of single qoutes(加倍单个 qoutes)。需要匹配这样的东西: 我想为以单引号开头和结尾的字符串找到最短的匹配项,因此上面的字符串意味着 3 个子字符串:

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

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

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

  • 我正在尝试编写一个regex来匹配单引号,可能会被转义。匹配的引号前面应该有偶数个反斜杠(奇数表示引号被转义)。例如,在这五个字符串中: 下面是我拥有的正则表达式: 然而,这与上面示例中的任何内容都不匹配。我觉得这很奇怪,因为从正则表达式中删除会与带有两个反斜杠的引号相匹配,这是应该的: 匹配