查找表达式中所有用(“”)包围的短语和不包含(“”)的单词

问题描述 投票:3回答:1

正在使用的语言:PHP

让我说这样的表达:

Ayala NOT ("Ayala Station" OR "Ayala Branch" OR "Joey Ayala")

而且我想提取以下单词:-Ayala-阿亚拉站-阿亚拉分公司和-Joey Ayala

我想检索用双引号“”括起来的所有短语以及上面示例中的独立词,例如Ayala,但实验失败

尝试过多个正则表达式

第一次尝试:

"([^"]+)"-我知道此正则表达式是用于在双引号内引起单词/短语的正确正则表达式

第二次尝试:

~\w+(?:-\w+)*~-此正则表达式将从给定的表达式或字符串中获取所有单词

第三次尝试:

结合上面的2次尝试"([^"]+)"|~\w+(?:-\w+)*~-我能够为所需的输出生成用例,但将这两个用例结合在一起,就不会提取Ayala一词]]

示例游乐场regex101

第四次尝试:

尝试使用"([^"]+)"|\S+,但其中包含特殊字符

4th Attempt

我是否用正则表达式缺少某些东西?

正在使用的语言:PHP,我有一个这样的表达式:Ayala NOT(“ Ayala站”或“ Ayala分支”或“ Joey Ayala”),我想提取以下单词:-Ayala-Ayala站.. 。

php regex preg-match
1个回答
1
投票

替换项的右侧不应包含正则表达式定界符-正则表达式定界符应仅位于整个模式


0
投票

要通过同一组索引捕获不同组的匹配,您也可以使用(?<=")\b[^"]+(?=")|\b(?!(?:NOT|OR)(?!-))\w+(?:-\w+)* 。此外,我会使用branch reset PCRE control verbs跳过不需要的单词(*SKIP)(*F)

© www.soinside.com 2019 - 2024. All rights reserved.