【发布时间】:2015-12-22 15:39:26
【问题描述】:
给定文本字符串,例如:
wikiradio 27/09/2012 - LE QUATTRO GIORNATE DI NAPOLI raccontate da Ida 格里巴迪
wikiradio 10/04/2013 - DAG HAMMARSKJOLD raccontato da Susanna Pesenti
我正在使用正则表达式以仅匹配字符串的大写单词(即“LE QUATTRO GIORNATE DI NAPOLI”和“DAG HAMMARSKJOLD”)。 我的代码是这样的:
$title = $_GET["title"];
if (preg_match_all('/\\b(?=[A-Z])[A-Z\' ]+(?=\\W)/',$title,$match)) {
process matched portion...
它几乎总是有效,但是当 $title 字符串包含 撇号+空格 或 破折号 时,它不会。 例如,这两个标题中的大写单词不匹配。
wikiradio 11/02/2014 - L'ABBE' PIERRE raccontato da Giovanni Anversa
wikiradio 22/12/2015 - JEAN-MICHEL BASQUIAT raccontato da Costantino 多拉齐奥
我错过了什么?
【问题讨论】:
-
我想知道你不能只取第一个破折号后的所有字符,然后停在第一个空格后面跟一个小写字母。这就像
/- .*?(?= [a-z])/一样简单。 Demo. -
这是一个有趣的解决方法。
标签: regex preg-match uppercase hyphen