查找表达式中所有带 (" ") 和不带 (" ") 的词组
Find all phrases enclosed with (" ") and words without (" ") in an expression
正在使用的语言:PHP
假设我有这样一个表达式:
Ayala NOT ("Ayala Station" OR "Ayala Branch" OR "Joey Ayala")
而且我想提取下面的话:
- 阿亚拉
- 阿亚拉站
- Ayala Branch 和
- 乔伊·阿亚拉
我想检索所有用双引号 " "" 括起来的词组和独立的词,例如上例中的 Ayala , 但实验失败
尝试了多个正则表达式
第一次尝试:
"([^"]+)"
- 我知道这个正则表达式是将 words/phrases 放在双引号内的正确正则表达式
第二次尝试:
~\w+(?:-\w+)*~
- 此正则表达式将从给定表达式或字符串
中获取所有单词
第三次尝试:
结合上面的2次尝试
"([^"]+)"|~\w+(?:-\w+)*~
- 我能够为我想要的输出生成我的用例,但是结合这两个,Ayala 词没有被提取
游乐场示例 regex101
第四次尝试:
尝试使用 "([^"]+)"|\S+
但它包含特殊字符
我是否遗漏了正则表达式的内容?
交替的右侧不应该有正则表达式分隔符 - 正则表达式分隔符应该只围绕 整个模式(在 PHP 字符串分隔符旁边)。例如
如果你想一次捕获所有的匹配项,没有捕获组,你可以使用
(?<=")\b[^"]+(?=")|\w+(?:-\w+)*
https://regex101.com/r/nP6wM5/10
要在正则表达式本身中排除 NOT 和 OR,请使用:
(?<=")\b[^"]+(?=")|\b(?!(?:NOT|OR)(?!-))\w+(?:-\w+)*
在匹配独立词之前对它们进行负面预测。
正在使用的语言:PHP
假设我有这样一个表达式:
Ayala NOT ("Ayala Station" OR "Ayala Branch" OR "Joey Ayala")
而且我想提取下面的话:
- 阿亚拉
- 阿亚拉站
- Ayala Branch 和
- 乔伊·阿亚拉
我想检索所有用双引号 " "" 括起来的词组和独立的词,例如上例中的 Ayala , 但实验失败
尝试了多个正则表达式
第一次尝试:
"([^"]+)"
- 我知道这个正则表达式是将 words/phrases 放在双引号内的正确正则表达式
第二次尝试:
~\w+(?:-\w+)*~
- 此正则表达式将从给定表达式或字符串
第三次尝试:
结合上面的2次尝试
"([^"]+)"|~\w+(?:-\w+)*~
- 我能够为我想要的输出生成我的用例,但是结合这两个,Ayala 词没有被提取
游乐场示例 regex101
第四次尝试:
尝试使用 "([^"]+)"|\S+
但它包含特殊字符
我是否遗漏了正则表达式的内容?
交替的右侧不应该有正则表达式分隔符 - 正则表达式分隔符应该只围绕 整个模式(在 PHP 字符串分隔符旁边)。例如
如果你想一次捕获所有的匹配项,没有捕获组,你可以使用
(?<=")\b[^"]+(?=")|\w+(?:-\w+)*
https://regex101.com/r/nP6wM5/10
要在正则表达式本身中排除 NOT 和 OR,请使用:
(?<=")\b[^"]+(?=")|\b(?!(?:NOT|OR)(?!-))\w+(?:-\w+)*
在匹配独立词之前对它们进行负面预测。