我正在尝试创建正则表达式以在html标记中查找大写句子。这是一个例子:
<span style="font-family:Arial; font-size:11pt; font-weight:bold">RESSONÂNCIA MAGNÉTICA</span></p>
我得到了这个正则表达式:^<span style="font-family:Arial; font-size:11pt; font-weight:bold">+[A-Z]+<\/span><\/p>
然而它无法正常工作。它缺少空格和带有重音的字母。
答案 0 :(得分:1)
您似乎有一个非常具体的案例。 @Mariano指出了一个很好的方法来抓住大小写字符,这是unicode安全的(很棒的工作!)但也许有点不同会有所帮助。
你提到想要大写的句子......我认为这不仅仅是大写字母,包括标点符号,其他所有字符都可以。也许想想什么不行?如果不允许在该标记内的所有内容都是小写字母,那么您的匹配(在标记内)可能是[^a-z]+
,它将匹配从a到z的小写字母。
preg_replace("/^<span style=\"font-family:Arial; font-size:11pt; font-weight:bold\">([^a-z]+)<\/span><\/p>/u", "\1", $input_lines);
如果你想抓住任何跨度的内容,你可以使用这样的东西:
preg_replace("/^<span[^>]+>([^a-z]+)<\/span>/u", "\1", $input_lines);
或者处理带重音的小写字母:
preg_replace("/^<span[^>]+>([^\{Ll}]+)<\/span>/u", "\1", $input_lines);
答案 1 :(得分:0)
您使用的[A-Z]
仅匹配A
到Z
。这可以使用Unicode categories
\p{Lu}
将字符与Uppercase_Letter
Unicode属性匹配。/u
(Unicode修饰符)。这符合您的要求:[\p{Lu} ]+
<强>代码:强>
preg_replace("/^<span style=\"font-family:Arial; font-size:11pt; font-weight:bold\">([\p{Lu} ]+)<\/span><\/p>/u", "\1", $input_lines);
答案 2 :(得分:0)
我建议在previous answer中使用\p{Lu}
,但您可能对匹配阿拉伯语,德语特殊字符或任何Uppercase_Letter
类别匹配不感兴趣。
只需在角色类中添加您想要的特殊字符。例如,我猜测它是Portuguese你匹配的:
[A-ZÁÂÃÀÇÉÊÍÓÔÕÚ ]+