正则表达式只有次要匹配

时间:2015-03-30 10:15:06

标签: php regex

我们有mysql结果,字符串如下: 测试字符串文章标题 (此字符串是正常的,带有第一个大写字母) 测试字符串文章标题 (此字符串包含正文中的大写字母) 我们如何匹配包含大写字母的字符串(第二个示例字符串)而不匹配第一个字母(第一个示例字符串)?

1 个答案:

答案 0 :(得分:1)

如果要匹配包含大写字母的所有字符串,但不关心第一个单词的大小写,则可以使用以下正则表达式Multiline选项:

^\p{L}*\s*(?:\p{Lu}\p{L}*\s*)+$

查看this example

它将匹配"测试字符串文章标题","测试字符串文章标题",但不匹配"测试字符串文章标题"。

示例代码:

$re = "/^\\p{L}*\\s*(?:\\p{Lu}\\p{L}*\\s*)+$/m"; 
$str = "Test string article title\nTest String Article Title\ntest String Article Title"; 
preg_match_all($re, $str, $matches);