Я пытаюсь сгенерировать свой Pattern
, чтобы иметь возможность установить/добавить/отредактировать его через JTextfield
в UI для варианта2 он работает нормально, но если я попытаюсь добавить более одного рисунка (вариант1), он останавливается работать.Java regex generate pattern
Можете ли вы сказать мне, что я делаю неправильно?
Вот соответствующая часть кода: выход
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestSomeStaff {
String getPattern(String s) {
String p = "";
for (int i = 0; i < s.length(); i++) {
if (Character.isLetter(s.charAt(i))) {
p += "\\" + "w";
} else if (Character.isDigit(s.charAt(i))) {
p += "\\" + "d";
} else {
p += s.charAt(i);
}
}
return p;
}
public static void main(String[] args) {
String code1 = "11XXX08_XX000XX__XX11";
String code2 = "11XXX08_XX000X__XX11";
TestSomeStaff t = new TestSomeStaff();
// String p="("+t.getPattern(code1) + ") | ("+t.getPattern(code2)+")";
// //variant1
String p = t.getPattern(code1); // variant 2
System.out.println(t.getPattern(code1));
Pattern pat = Pattern.compile(p);
Matcher m = pat.matcher(code1);
System.out.println("pattern:" + m.pattern());
if (m.find()) {
System.out.println(m.group());
}
}
}
var1: выход
\d\d\w\w\w\d\d_\w\w\d\d\d\w\w__\w\w\d\d
pattern:(\d\d\w\w\w\d\d_\w\w\d\d\d\w\w__\w\w\d\d) | (\d\d\w\w\w\d\d_\w\w\d\d\d\w__\w\w\d\d)
var2:
\d\d\w\w\w\d\d_\w\w\d\d\d\w\w__\w\w\d\d
pattern:\d\d\w\w\w\d\d_\w\w\d\d\d\w\w__\w\w\d\d
11XXX08_XX000XX__XX11
Хотя не совсем понятно, что вы собираетесь делать, чтобы соответствовать шаблону, вы должны удалить пробелы в варианте 1: ") | (" – olexd