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

2022-10-22T14:02:36+00:00
Вопросы с похожей тематикой, как у вопроса:

Regex: сопоставление по исключению, без упреждения - возможно ли?