在单个pcre表达式中匹配3+ Title Case Word

时间:2014-10-11 09:59:54

标签: regex pcregrep

我正在寻找单个pcre(版本3.85)兼容的正则表达式,它匹配由三个或更多标题大小写单词组成的字符串,但不匹配任何包含以小写字母开头的单词的字符串。 E.g:

"Gaius Julius Caesar" should match
"Gaius Caesar" should not match
"Gaius Julius Caesar Rome" should match
"Gaius julius Caesar" should not match

尝试

(\b[A-Z]\w+\b){3,}

没有成功。

任何提示?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下pcregrep命令,

$ pcregrep -o -M '^[A-Z]\w+(?: [A-Z]\w+){2,}$' file
Gaius Julius Caesar
Gaius Julius Caesar Rome

OR

如果起始大写字母后面的以下字符必须为小写,请尝试以下命令。

$ pcregrep -o -M '^[A-Z][a-z]+(?: [A-Z][a-z]+){2,}$' file
Gaius Julius Caesar
Gaius Julius Caesar Rome

答案 1 :(得分:0)

尝试以下方法之一:

(\b[A-Z]\w+\b\s??){3,}

以下是demo

(\b[A-Z]\w+\b)(\s+\b[A-Z]\w+\b){2,}

以下是demo