我理解如何使用管道符号将单个字符串与多个正则表达式匹配,如本问题的一些答案中所述:Match a string against multiple regex patterns
我的问题是,当我有以下字符串时:
this_isAnExample of What nav-input a-autoid-9-announce thisIsAnExampleToo
我使用以下正则表达式来提取文本:
[A-Z][a-z]*|(?<=_)[A-Za-z-]*
我期待得到以下比赛:
is
An
Example
What
Is
An
Example
Too
但实际上我得到的是:
isAnExample
What
Is
An
Example
Too
基本上引擎会自动将单词An与示例相关联,因为它与下划线模式匹配,但我希望它将它们视为两个单词(非贪婪?),根据另一个模式,还有另一个匹配。
答案 0 :(得分:2)
您可能会将正则表达式设为
h1
第一部分是以大写字母开头的小写字,或第二部分:以下划线开头的小写字。
您发布的正则表达式[A-Z][a-z]*|(?<=_)[a-z-]*
的部分匹配下划线后面的大小写字母,即大写字母符合时不会停止匹配,这实际上应该是另一个单词的开头。
答案 1 :(得分:0)