Como posso extrair uma substring de dentro de uma string no Ruby?
Exemplo:
String1 = "<name> <substring>"
Eu quero extrair substring
de String1
(ou seja, tudo dentro da última ocorrência de <
e >
).
String1.scan(/<([^>]*)>/).last.first
scan
cria uma matriz que, para cada um <item>
em String1
contém o texto entre o <
eo >
numa matriz de um elemento (porque, quando usado com uma expressão regular que contém grupos de captura, digitalização cria uma matriz contendo as capturas para cada jogo). last
fornece a última dessas matrizes e, em first
seguida, fornece a string nela.
"<name> <substring>"[/.*<([^>]*)/,1]
=> "substring"
Não há necessidade de usar scan
, se precisarmos de apenas um resultado.
Não há necessidade de usar o Python match
, quando temos o Ruby String[regexp,#]
.
Veja: http://ruby-doc.org/core/String.html#method-i-5B-5D
Nota: str[regexp, capture] → new_str or nil
if we need only one result
na minha solução. Ematch()[]
é mais lento, porque são dois métodos em vez de um.string[regex]
pode ser tão legível nesse cenário, que foi o que eu usei pessoalmente.Você pode usar uma expressão regular para isso facilmente ...
Permitindo espaços ao redor da palavra (mas não mantendo-os):
Ou sem os espaços permitidos:
fonte
<>
realmente seja a última coisa na string. Se, por exemplo, a stringfoo <bar> baz
for permitida (e supostamente fornecer o resultadobar
), isso não funcionará.Aqui está uma abordagem um pouco mais flexível usando o
match
método Com isso, você pode extrair mais de uma sequência:fonte
Uma varredura mais simples seria:
fonte