Regex 正则表达式:如何在两个字符内匹配文本的一部分,例如引号

Regex 正则表达式:如何在两个字符内匹配文本的一部分,例如引号,regex,string,Regex,String,我需要在由两个字符包围的文本中匹配一个文本,在本例中为“and”。因此,假设整个字符串是: 关于猫,我问他‘我不在的时候你能照顾我的猫吗?’他说 他说“是的” 现在,如果我使用下面的正则表达式 (?<=‘)(.*?)(?=’) (?您只需将过于宽松的点替换为不包含结束引号和目标的第一个字符的类: (?<=‘)([^’e]*(e)[^’]*)(?=’) (?你能解释一下猫的例子吗?。我不能解释understand@KeyurShah如果我想匹配单词cat,它应该匹配由“”包围的子字

我需要在由两个字符包围的文本中匹配一个文本,在本例中为“and”。因此,假设整个字符串是:

关于猫,我问他‘我不在的时候你能照顾我的猫吗?’他说 他说“是的”

现在,如果我使用下面的正则表达式

(?<=‘)(.*?)(?=’)

(?您只需将过于宽松的点替换为不包含结束引号和目标的第一个字符的类:

(?<=‘)([^’e]*(e)[^’]*)(?=’)

(?你能解释一下猫的例子吗?
。我不能解释understand@KeyurShah如果我想匹配单词cat,它应该匹配由“”包围的子字符串内部的“cat”,而不是它外部的“cat”(请参见我更新的示例)。换句话说,它将匹配一次出现的猫,而不是两次出现的猫。你能检查一下这一次有什么问题吗@KeyurShah:在这种情况下,情况不同,因为开始引号和结束引号是相同的。@KeyurShah:要捕捉相同单引号之间的所有猫,模式更复杂,因为你需要知道哪一个是开始的quote和哪一个是结束报价(使用
\G
锚定以确保匹配之间的连续性):是的,找到开始和结束引号太复杂了。对我来说,我更喜欢使用2个正则表达式来完成这项工作:首先查找引号之间的字符串,然后使用其他正则表达式在该字符串中查找cat。这会更简单。您应该使用刚才共享的正则表达式更新您的答案。谢谢
(?<=‘)([^’c]*(?:(?:\Bc|c(?!at\b))[^’c]*)*\b(cat)\b[^’]*)(?=’)