Estou tendo problemas com regexps ...
Eu experimentei alguns sites com geradores regexp, mas nenhum me ajudou ... então ... aqui estou ...
Eu preciso de um regexp que agarre apenas as 2 primeiras cordas antes do pipe ...
Então, basicamente, eu só quero ficar com:
ENTRADA: String_1 String_2 | String_3 String_4
SAÍDA: String_1 String_2
Este pega todas as palavras .. ([A-Z]) w + e eu só preciso das informações antes do canal ...: "(
Obrigado a todos!
Respostas:
1 para resposta № 1Você pode usar este regex:
^([A-Z]w* +[A-Z]w*)(?= *|)
RegEx Demo
0 para resposta № 2
Simplesmente você poderia fazer assim,
.*?(?=s*|)
0 para resposta № 3
Você pode usar o Regex não ganancioso para fazer isso de forma bem sucinta:
([Ss]+?)|
Vai pegar tudo antes do cano
0 para a resposta № 4
Eu faria uma divisão no pipe, mas se você realmente quiser uma regex:
^([^|]+)
Isso capturará (no grupo 1) tudo o que não é um cano desde o início da string.
Se você deseja capturar os 2 grupos:
^([^|]+) | (.*)$
Com o seu exemplo,
String_1 String_2
estará no grupo 1 e String_3 String_4
no grupo 2.
A implementação depende do idioma que você está usando.
Por exemplo, no PHP:
$str = "String_1 String_2 | String_3 String_4";
preg_match("/^([^|]+) | (.*)$/", $str, $match);
//$match[1] : String_1 String_2
//$match[2] : String_3 String_4