следующий код:Странное поведение с обнаружением конкретных puntucations в регулярных выражениях
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Create a Pattern object
Pattern r = Pattern.compile("[?:!.,;'’\"“”«»<>=()_-]+");
// Now create matcher object.
Matcher m = r.matcher("Hello,World!");
while(m.find())
System.out.println(m.group());
}
}
выходы:
,
!
Если добавить знаки препинания - в регулярных выражений (более дефиса), так что она становится:
Pattern r = Pattern.compile("[?:!.,;'’\"“”«»<>=()_-–]+");
выход становится:
ello,
orld!
Кто-нибудь может сказать мне, почему эта странная неисправность?
Поскольку этот символ '-' действует как диапазон от' _' до длинного дефиса –
'Pattern r = Pattern.compile (" [?:!.,; '' \ "" "« »<> = () _--] + ");' Обязательно сохраните '-' в первой или последней позиции в классе символов. – anubhava