2016-05-06 3 views
2

у меня есть несколько писем в этом формате:Regex, чтобы выбрать значение только внутри тегов

name of the person <[email protected]> 
name of another person <[email protected]> 

Я хотел бы иметь регулярное выражение выражения, которое будет выбирать только те элементы, находящиеся внутри тегов, вместе с тегами .. выше входа приведет к этому выходу:

<[email protected]> 
<[email protected]> 

Я хотел бы регулярное выражение идут работать вместе с Java

+0

Предполагая, что нет '<' or '>' в другом месте в строке: '<.*>' – timolawl

+0

@timolawl это будет соответствовать все между первым '<' и последний '>', regex является жадным и '. *' будет потреблять все ('>' также) между ними. https://regex101.com/r/gV9uN5/1 (не полагайтесь на разрывы строк) – dognose

+0

Попробуйте это выражение 'String tagregex =" <(.*?)> ";' –

ответ

4

Вы можете использовать выражение <[^>]*>, чтобы соответствовать все, что было в пределах одной пары угловых скобок:

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

// Define your regex 
Pattern regex = Pattern.compile("<[^>]*>"); 
// Get your matches 
Matcher m = regex.matcher("{your-input-here}"); 
// Iterate through your matches 
while(m.find()){ 
    // Output each match 
    System.out.println(m.group(0)); 
} 

Вы можете see a working example of this here.

+0

Спасибо, что работает –

1

Вопрос, как хорошо уже ответил, но другой вариант использует <.*?>, то есть:

String text = "name of the person <[email protected]> name of another person <[email protected]>"; 
Pattern regex = Pattern.compile("<.*?>"); 
Matcher regexMatcher = regex.matcher(text); 
while (regexMatcher.find()) { 
    System.out.println(regexMatcher.group(0)); 
} 

Demos:

Java Demo

Regex Demo


Regex Объяснение:

<.*?> 
    < matches the characters < literally 
    .*? matches any character (except newline) 
     Quantifier: *? Between zero and unlimited times, as few times as possible, expanding as needed [lazy] 
    > matches the characters > literally 
+0

Спасибо за вашу помощь, сначала ответил Рион, поэтому я должен отдать его ему, во всяком случае, хорошую работу с демонстрацией и пояснительным пояснением, спасибо большое –

Смежные вопросы