【问题标题】:Combine Multiple Regex Groups in one Regex在一个正则表达式中组合多个正则表达式组
【发布时间】:2014-12-08 05:51:34
【问题描述】:

我正在尝试将多个正则表达式模式组组合成一个正则表达式模式

Demo Here

\b 
(?<CASE_UPPER>[[:upper:]]+)
(?<CASE_MIXED>[A-z]*[A-Z][A-z]*+)
(?<CASE_INITIALCAPS>[A-Z][a-z]+[A-Z]*+)
(?<PHRASE>[A-Z][\w-]*\s+[A-Z][\w-]*+)
\b

对于这个文本块:

我正在测试这是否适用于 UPPERCASE、InitialCase 和混合大小写,当然这也是混合大小写。第一个单词的首字母大小写不应该匹配。 FirstWordMixed 大小写应该是。第一个单词应该大写。当然,组合 UPPER mixEd Initicase 的任何组合的短语应该被拉为短语而不是一个单词,当然可以是 Initcase1 Initcase2 Initcase3。最后,它需要匹配各种关联,例如首词关联、关联尾词、单词中间词关联。

它适用于单个组,但不适用于所有组。我不知道我是否以正确的方式进行操作!任何帮助将不胜感激。

【问题讨论】:

  • [A-z] 不会做你期望的工作。
  • @AvinashRaj 你能纠正我吗?
  • 匹配大小写字母[A-Za-z]
  • 你说的是 CASE_MIXED 吗?
  • 你想匹配什么?

标签: php regex pcre


【解决方案1】:

根据我的理解

您可以使用交替| 来组合不同的正则表达式

\b 
((?<CASE_UPPER>[[:upper:]]+)|
(?<CASE_INITIALCAPS>[A-Z][a-z]+[A-Z]*+)|
(?<CASE_MIXED>[A-z]*[A-Z][A-z]*+)|
(?<PHRASE>[A-Z][\w-]*(\s+[A-Z][\w-]*)+))
\b

Regex Example

【讨论】:

  • 是的,你明白我的意思..我已经尝试过了..但它似乎不适用于 Initialcaps 和 Phrases
  • CASE_INITIALCAPS 和 PHRASE 缺失..首字母应该像:regex101.com/r/qK1sA5/33
  • 当我编辑到 :regex101.com/r/qK1sA5/38 时,您的解决方案有效,但 Initcase1 Initcase2 Initcase3 应该被检测为一个短语。目前它只检测到Initcase1 Initcase2。如果你能给我一个提示如何获得它会很棒..
  • 你能告诉我如何在第一次出现之后匹配 CASE_INITIALCAPS 吗?因为Firstword Initial Case should not be matched.
  • @VickyGonsalves 对不起,我没听懂你
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 2020-01-02
  • 2018-06-16
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多