Php 在单引号正则表达式中捕获内容时忽略撇号

Php 在单引号正则表达式中捕获内容时忽略撇号,php,regex,pcre,Php,Regex,Pcre,我这里的问题是捕获单引号(如“xyz”)中的内容。 但是撇号,这是同一个符号作为一个单一的引用(')来的方式 我编写的正则表达式是:/(\w\'\w)(*SKIP)(*F)|(\'[^\']*\')/ 我用的例子是:Hello,女士“这是普拉善特的书。” 需要捕捉的是:“这是Prashanth的书。” 但是,最重要的是:“这是Prashanth” 这是我试穿的衣服的链接 非常感谢您的帮助。谢谢大家! 对于您提供的字符串,可以使用正则表达式: \B'\K(?:(?!'\B).)+ 说明: \

我这里的问题是捕获单引号(如“xyz”)中的内容。
但是撇号,这是同一个符号作为一个单一的引用(')来的方式

我编写的正则表达式是:
/(\w\'\w)(*SKIP)(*F)|(\'[^\']*\')/

我用的例子是:
Hello,女士“这是普拉善特的书。”

需要捕捉的是:
“这是Prashanth的书。”

但是,最重要的是:
“这是Prashanth”

这是我试穿的衣服的链接


非常感谢您的帮助。谢谢大家!

对于您提供的字符串,可以使用正则表达式:

\B'\K(?:(?!'\B).)+

说明:

  • \B
    -非单词边界
  • -匹配一个
  • \K
    -忘记目前为止匹配的所有内容
  • (?:(?!”\B)。+
    -匹配任何字符的1+次出现次数(换行除外),该字符不以
    开头,后跟非单词边界

对于您提供的字符串,您可以使用正则表达式:

\B'\K(?:(?!'\B).)+

说明:

  • \B
    -非单词边界
  • -匹配一个
  • \K
    -忘记目前为止匹配的所有内容
  • (?:(?!”\B)。+
    -匹配任何字符的1+次出现次数(换行除外),该字符不以
    开头,后跟非单词边界

您不能使用
[^\']
捕获包含
'
的文本,在您的示例中,
这是Prashanth的书。
在文本中包含
'
字符。您需要修改正则表达式以使用
*?
而不是
[^\']
,并且可以这样编写正则表达式

(\w'\w)(*SKIP)(*F)|('.*?'\B)

此外,您不需要转义单个引号
,因为这在正则表达式中没有特殊意义

从您的示例中,不清楚您是否希望捕获的匹配在匹配周围包含
。如果您不想在匹配中捕获
,可以使用基于lookarounds的正则表达式并使用

(?<=\B').*?(?='\B)

(?您不能使用
[^\']
捕获包含
'
的文本,在您的示例中,
这是Prashanth的书。
在文本中包含
'
字符。您需要修改正则表达式以使用
*?
而不是
[^\']
,并可以这样编写正则表达式

(\w'\w)(*SKIP)(*F)|('.*?'\B)

此外,您不需要转义单个引号
,因为这在正则表达式中没有特殊意义

从您的示例中,不清楚您是否希望捕获的匹配在匹配周围包含
'
。如果您不希望在匹配中捕获
'
,您可以使用基于lookarounds的正则表达式并使用此

(?<=\B').*?(?='\B)

(?很乐意帮忙:)你否决了这个问题吗?有人否决了!我不明白为什么!:(@PrashanthBenny:不,我没有投反对票。如果我投了反对票,为什么我要回答一个问题。另外,在regex tag中的问题上投反对票是一个正常的趋势。无论如何,请接受我的反对票,因为你的问题很好,你展示了你对样品的尝试。非常感谢你对Pushpesh的支持。这让我的一天没有被搞砸s的问题…我实际上根本没有把\B看作一种可能性:D被邀请帮助:)你否决了这个问题吗?有人否决了!我不明白为什么!:(@PrashanthBenny:不,我没有投反对票。如果我投了反对票,为什么我要回答一个问题。另外,在regex tag中的问题上投反对票是一个正常的趋势。无论如何,请接受我的反对票,因为你的问题很好,你展示了你对样品的尝试。非常感谢你对Pushpesh的支持。这让我的一天没有被搞砸s的问题…我实际上根本没有把\B视为一种可能性:DWow,
\K
。多年来一直不知道它…谢谢!哇,
\K
。多年来一直不知道它…谢谢!