Как я могу использовать регулярное выражение для сопоставления с шаблоном только в определенной позиции в строке?

Предположим, 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 который не требует соответствия всей строки: ^ означает "начало строки", поэтому для начала строки должны следовать любые шесть символов, за которыми следует ваш шаблон.

String.matches(".{6}World.*")

Начало, 6 персонажей, Мир

Вы можете использовать положительный взгляд за утверждением:

(?<=^.{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());
Другие вопросы по тегам