/ / PHP - Regex para mais de uma letra maiúscula? - php, regex, preg-match

PHP - Regex para mais de uma letra maiúscula? - php, regex, preg-match

Eu estou tentando escrever um script PHP que encontra todospalavras em uma lista ou um parágrafo que tenha mais de uma letra maiúscula - ou uma mistura de pelo menos uma letra e um número. Eu posso encontrar uma letra maiúscula, mas 2 letras maiúsculas em uma palavra é um problema.

Obrigado

Respostas:

0 para resposta № 1

Espero ter a sua pergunta certa. Essas expressões regulares correspondem a todas as palavras que têm pelo menos 2 letras maiúsculas ou têm pelo menos 1 letra + 1 número (por ex. HEllo, HellO, Hello1, olá2, etc). Ele usa o espaço como separador para que ele falhe com pontuação, incluindo vírgulas, pontos e outras coisas nas correspondências.

$text = "Text";
preg_match_all("#(?<= )([^ ]*p{Lu}[^ ]*p{Lu}[^ ]*(?= )|[^ ]*p{L}[^ ]*p{N}[^ ]*|[^ ]*p{N}[^ ]*p{L}[^ ]*)(?= )#u", $text, $matches);
print_r($matches[0]);

(Explicação: corresponde a todas as palavras que são precedidas e seguidas por um espaço (mas não as inclui na correspondência), que tem algo que não é um espaço repetido 0, 1 ou mais vezes, uma letra maiúscula, mais uma vez um espaço não repetido 0, 1 ou mais vezes, novamente uma letra maiúscula e novamente algo que "é um não-espaço, ou o mesmo, mas no lugar das letras maiúsculas você tem uma letra e um número, ou um número e uma letra)

Para usar isso você precisa PHP > 5.1.0. A vantagem é que corresponde a todos oscaracteres unicode que são considerados letras ou números, não apenas ASCII. Se você não precisa disso, ou tem uma versão secundária do PHP, você pode usar a versão ASCII:

$text = "Text";
preg_match_all("#(?<= )([^ ]*[A-Z][^ ]*[A-Z][^ ]*(?= )|[^ ]*[A-Za-z][^ ]*[0-9][^ ]*|[^ ]*[0-9][^ ]*[A-Za-z][^ ]*)(?= )#", $text, $matches);
print_r($matches[0]);

0 para resposta № 2

não testado, mas na direção certa geral:

[a-z]*[A-Z]+[a-z]*[A-Z]+[a-z]*s

Em outras palavras, poderia começar com um ou maisletras minúsculas, tem uma letra maiúscula, talvez outra ou mais letras minúsculas, então tem outra letra maiúscula e pode ter letras minúsculas antes que um espaço seja encontrado. Você pode ter que adicionar pontuação, etc, dependendo do seu caso de uso.