Regex: сопоставление по исключению, без упреждения - возможно ли?
Я наткнулся на этот вопрос regex-negation и воспринял тот факт, что regex нет полностью работающего regular-expression регулярного выражения, как perl-regex личную проблему. Я считаю, что regexes мне удалось создать регулярное regexp выражение, которое работает для всех regular-expressions входных данных - при условии, что regexp вы можете использовать atomic grouping / possessive quantifiers.
Конечно, я apache-regexp не уверен, есть ли какие-либо regularexpression разновидности, которые позволяют apache-regexp атомарную группировку, но regularexpression не поиск, но вопрос, заданный, можно perl-regex ли в регулярном выражении regex-negation указать исключение без поиска, и regularexpression это < em> технически regexp возможно:
\A(?:$|[^f]++|f++(?:[^o]|$)|(?:f++o)*+(?:[^o]|$))*\Z
Пояснение:
\A #Start of string
(?: #Non-capturing group
$ #Consume end-of-line. We're not in foo-mode.
|[^f]++ #Consume every non-'f'. We're not in foo-mode.
|f++(?:[^o]|$) #Enter foo-mode with an 'f'. Consume all 'f's, but only exit foo-mode if 'o' is not the next character. Thus, 'f' is valid but 'fo' is invalid.
|(?:f++o)*+(?:[^o]|$) #Enter foo-mode with an 'f'. Consume all 'f's, followed by a single 'o'. Repeat, since '(f+o)*' by itself cannot contain 'foo'. Only exit foo-mode if 'o' is not the next character following (f+o). Thus, 'fo' is valid but 'foo' is invalid.
)* #Repeat the non-capturing group
\Z #End of string. Note that this regex only works in flavours that can match $\Z
Если по regexes какой-либо причине вы можете regularexpression использовать атомарную группировку, но regular-expressions не притяжательные квантификаторы regex-php или поиск, вы можете использовать:
\A(?:$|(?>[^f]+)|(?>f+)(?:[^o]|$)|(?>(?:(?>f+)o)*)(?:[^o]|$))*\Z
Однако, как regular-expression отмечают другие, вероятно, более regular-expression практично просто аннулировать perlre совпадение другими способами.
regex
regex-negation
Regex: сопоставление по исключению, без упреждения - возможно ли?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.