2015-04-17 5 views
0

Я понимаю это?! заключается в исключении шаблона, поэтому, например, (?! b) означает, что он будет соответствовать «a», если «a» не следует «b». Мой вопрос, предположим, что у меня есть файл со следующим содержанием:Java Regex Исключить шаблон?! Использование

a cat is a cat, a dog is a dog, 

a bird is a bird. 

Сколько раз Узор матч (* б?!.)? Это 0 раз? так как все «а» до «б» в последнем слове «птица»?

+1

Я не знаю много регулярных выражений, но этот сайт благочестив: https://regex101.com/ –

+0

см. Https://regex101.com/r/sI4wE1/1. Вы можете играть с регулярным выражением на этом сайте. –

+0

Этот сайт потрясающий! большое спасибо! – StackJay

ответ

1

Это будет соответствовать каждому a. Шаблон a(?!b) означает, что будет соответствовать a не немедленно после чего b. cab не совпадают, но a bird будет.

EDIT

С помощью нового шаблона a(?!.*b), не подходит, если весь текст на одной и той же линии. .* не соответствует переносы строк, так:

Кошка кошка, собака собаке

птица птица

Это будет иметь спички для каждого а из первая линия.

+0

Нет проблем, я отредактирую свой ответ, но ваше предположение верно; нет совпадений, кроме строк. См. Выше – Docteur

+0

. * Соответствует любому символу (кроме новой строки). Я не знал, что * не мог сравниться с линиями. Отсюда путаница. : D Спасибо за ваше объяснение! – StackJay

+0

* can, '.' can not;) Если вы хотите проверить все, включая строки новой строки/строки, я считаю, что вы использовали бы' [. \ S] * '. С удовольствием! Получайте удовольствие с регулярными выражениями: – Docteur

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