Inquiridor
Expressão Regular

Pergunta
-
Olá, Pessoal!
Pretendo ter a expressão regular para adicionar no meu código. Este código deverá ler o arquivos textos parecidos com este:
<Databases> <Database SiteCount="44" Name="SharePoint_Content" DataSource="sxp0996"> <Site Id="33cb5b0b-4aac-4555-b7ca-08b07c52c180" OwnerLogin="SP\xabomes" InSiteMap="True"> <Webs Count="1"> <Web Id="d365bc63-a7f6-4f7c-92d5-69608dd30256" Url="/sites/w-pm" LanguageId="1046" TemplateName="STS#1" TemplateId="1" /> </Webs> </Site> <Site Id="1fe4fe6a-cb4d-4003-b29b-262cd7eac801" OwnerLogin="SP\xabomes" InSiteMap="True"> <Webs Count="1"> <Web Id="70ea0212-d96d-4765-87ef-1dd0263660a1" Url="/pagina/dos_cmd" LanguageId="1046" TemplateName="STS#0" TemplateId="1" /> </Webs> </Site> <Site Id="555485b7-5471-422b-9c1e-26bcd2e5c976" OwnerLogin="SP\xabomes" InSiteMap="True"> <Webs Count="1"> <Web Id="92efa137-6d7e-4e39-b0f5-fa1ad12308b6" Url="/sites/gest_muda" LanguageId="1046" TemplateName="STS#0" TemplateId="1" /> </Webs> </Site>
Quero obter em uma lista das Url entre "aspas".
Pelo exemplo acima, o retorno deve ser:
/sites/w-pm /pagina/dos_cmd /sites/gest_muda
Como desenvolver essa expressão regular?
Se eu estiver respondendo a sua pergunta, e a mesma tiver utilidade. Vote com útil. Se for minha dúvida, e você me ajudar na solução, terei o maior prazer em votar como útil. Esse é o espírito do Forum MSDN !!! Valew !
- Editado aNetao terça-feira, 19 de fevereiro de 2013 18:08
Todas as Respostas
-
Deixa eu ver se eu entendi, você quer uma expressão regular para aceitar coisas do tipo:
/sites/...........
Se for isso, ela ficará assim: ^\/sites\/\S+$
Ela irá aceitar strings que comecem com "/sites/" seguidas de qualquer carácter que não seja "espaço"
Ao infinito e além!
-
Deixa eu ver se eu entendi, você quer uma expressão regular para aceitar coisas do tipo:
/sites/...........
Se for isso, ela ficará assim: ^\/sites\/\S+$
Ela irá aceitar strings que comecem com "/sites/" seguidas de qualquer carácter que não seja "espaço"
Ao infinito e além!
Bom, eu editei o exemplo para ficar mais facil.
Depois da Url=, deve retornar apenas o que está entre o 1º par de aspas
Se eu estiver respondendo a sua pergunta, e a mesma tiver utilidade. Vote com útil. Se for minha dúvida, e você me ajudar na solução, terei o maior prazer em votar como útil. Esse é o espírito do Forum MSDN !!! Valew !
-
Dessa forma ^\/\S+\/\S+$ serão aceitas qualquer string que comece com "/" seguida de algum texto + "/" seguida de outro texto. Exemplo:
/sites/asdf
/as/asdfasd
/asdfasdf/asdfasd
Resolve seu problema, ou precisa ser mais específica?
Ao infinito e além!
-
Desse modo pode ter barra em qualquer local, como no exemplo.
A regra tem que ser, ao encontrar a tag Url= ... retornar o que está entre o 1º par de aspas ("").
Se eu estiver respondendo a sua pergunta, e a mesma tiver utilidade. Vote com útil. Se for minha dúvida, e você me ajudar na solução, terei o maior prazer em votar como útil. Esse é o espírito do Forum MSDN !!! Valew !
-
url="([^"]*)"
Lembrando que o paranteses delimita um grupo. Então para pegar só a url sem as aspas e o url= pegue o valor do grupo. Uma curiosidade: tem que ser mesmo uma regex? Não seria mais fácil pegar os atributos usando um parser xml?
-
Luciano,
não tá faltando/sobrando algum aspas?
Não verdade, estou fazendo em powershell
Se eu estiver respondendo a sua pergunta, e a mesma tiver utilidade. Vote com útil. Se for minha dúvida, e você me ajudar na solução, terei o maior prazer em votar como útil. Esse é o espírito do Forum MSDN !!! Valew !
-