Eu tenho uma string que tem duas aspas simples, o '
caractere. Entre as aspas simples estão os dados que desejo.
Como posso escrever um regex para extrair "os dados que eu quero" do texto a seguir?
mydata = "some string with 'the data i want' inside";
java
regex
string
text-extraction
asdasd
fonte
fonte
this 'is' my 'data' with quotes
parava mais cedo e retornava, emis
vez de corresponder ao máximo de caracteres possível e retornavais' my 'data
, que é o comportamento padrão.Você não precisa de regex para isso.
Adicione o apache commons lang ao seu projeto ( http://commons.apache.org/proper/commons-lang/ ) e use:
fonte
fonte
Existe uma linha simples para isso:
Ao tornar o grupo correspondente opcional, isso também serve para cotações não encontradas retornando um espaço em branco nesse caso.
Veja demonstração ao vivo .
fonte
Como você também marcou o Scala, uma solução sem regex que lida facilmente com várias seqüências de caracteres citadas:
fonte
.split('\'').get(2)
ou algo nesse sentido em Java? Acho que você pode precisar fazer uma varredura cerebral se achar que é uma solução legível - parece que alguém estava tentando fazer algum código de golfe para mim.fonte
como em javascript:
o regexp real é:
/'([^']+)'/
se você usar o modificador não guloso (como em outro post), é assim:
é mais limpo.
fonte
Em Scala,
fonte
String dataIWant = mydata.split("'")[1];
Veja demonstração ao vivo
fonte
O Apache Commons Lang fornece vários utilitários auxiliares para a API java.lang, principalmente os métodos de manipulação de String. No seu caso, as substrings inicial e final são as mesmas, então chame a seguinte função.
Se as substrings inicial e final forem diferentes, use o seguinte método sobrecarregado.
Se você deseja todas as instâncias das substrings correspondentes, use,
Para o exemplo em questão, obter todas as instâncias da substring correspondente
fonte
você pode usar isso eu uso while loop para armazenar todas as correspondências de substring na matriz, se você usar
if (matcher.find()) { System.out.println(matcher.group(1)); }
você obterá a correspondência de substring para poder usá-lo para obter todas as correspondências de substring
fonte
adicionar dependência apache.commons ao seu pom.xml
E o código abaixo funciona.
fonte
De alguma forma, como o grupo (1) não funcionou para mim. Eu usei o grupo (0) para encontrar a versão do URL.
fonte