Регулярные выражения .NET, как сопоставить строку, которая не содержит слова в определенной позиции - PullRequest
1 голос
/ 27 июля 2011

Если у меня есть текстовая строка типа «такой-то битный майк», где таким-то и таким-то образом может быть любая группа слов с любой группой пробелов в ней, как бы выглядело регулярное выражение, которое будет соответствовать

«такой-то битный майк», но не «такой-то действительно битный майк»

Единственный способ, которым я могу придумать для совпадения, - это .*, но .* (?!really)bit mike все еще соответствует.1007 *

Обратите внимание, для моих целей это нужно для работы с одним выражением регулярного выражения.

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

.* (?!really)bit mike совпадений. на самом деле ваш негативный взгляд здесь бесполезен, потому что вы в основном говорите, что следующие шесть символов не должны быть «действительно», но затем вы заявляете, что они должны быть «бит ми». Ни одна строка не может совпадать с «бит ми» и «действительно» одновременно, поэтому если:

.* bit mike соответствует строке, а затем .* (?!really)bit mike

Я не знаю, является ли это самым простым способом, но попробуйте использовать отрицательный взгляд назад вместо взгляда:

.*(?<!really) bit mike

Что говорит о том, что перед bit mike должно быть шесть символов, которое на самом деле не может быть строкой

2 голосов
/ 27 июля 2011

Возможно, вы использовали отрицательный взгляд ((?!...)), когда вы намеревались использовать отрицательный взгляд назад ((?<!...).Шаблон:

(?<!really )bit mike

будет соответствовать

so and so bit mike

, но не

so and so really bit mike
...