Как я могу использовать регулярное выражение для сопоставления с шаблоном только в определенной позиции в строке?
Предположим, 4 строки, 2 для сопоставления другой нет:
String string1 = "Hello World View";
String string2 = "Hello Nether World";
String string3 = "A World You should not find";
String string4 = "Any World is good";
Какое регулярное выражение будет соответствовать только string1
или же string4
где World
начинается в положении6
?
5 ответов
"^.{6}World"
Предполагая, что вы используете Matcher.find
который не требует соответствия всей строки: ^
означает "начало строки", поэтому для начала строки должны следовать любые шесть символов, за которыми следует ваш шаблон.
Вы можете использовать положительный взгляд за утверждением:
(?<=^.{6})World
Без регулярных выражений подстрок будет быстрее.
Псевдокод:
String strWorld = "World";
String string1 = "Hello World View";
bool bFound = false;
bFound = ( strWorld == string1.substr(6, strWorld.length()) ) ? true : false;
if ( bFound ) { }
Вы можете использовать метод region()
искать по части строки. Я твой случай:
matcher.region(6, str.length());