Я твердо использую регулярное выражение. Я следующее регулярное выражение, которое соответствует всем я хочу:Regex, чтобы соответствовать любому другому регулярному выражению
Очень долго - извините. Он используется для анализа строки формата для произвольных объектов. Это позволяет мне указать свойство (например, IntValue) и перенаправить ему дополнительный дочерний формат.
Это соответствует #
с последующим необязательным, не шаблон захвата ?:
, а затем шаблон необязательного «Параметры» (?r)
или (?a-r)
. Затем имя свойства следует за парой []
.
Для следующего ввода:
Int: #IntValue Bool: #BoolValue[]Word Str: '#StrValue' Double: #DoubleValue[#.00] #(?r)Bar[#(?r)StrValue[#Length]]
это соответствует:.
- #IntValue
- #BoolValue []
- #StrValue
- #DoubleValue [# 00 ]
- # (? R) Бар [# (? R) StrValue [#Length]]
Хорошо.
Но теперь мне нужно все другое. Я хочу, чтобы это в том же регулярном выражении было доступно для всех матчей (я могу решить случай, который у меня есть, проверяя, есть ли у id
или plain
).
шаблон по умолчанию, чтобы сделать это: ((?!<regex that matches what you want>).)*
В моем случае, как будет выглядеть (Pattern: <REG>|(?<plain>(?:(?!<REG>).)+)
) , что resuls в этом огромном регулярное выражение (ведьма maches отлично):
Puh. Он делает то, что должен, но ...
Есть ли другой способ сопоставить все, что не соответствует предыдущей части регулярного выражения?
Это ясно?
Почему бы просто не сделать '! Regex.IsMatch (input);'? – Rob
Похоже, что нет способа, если вы не хотите попробовать PCRE.net, где вы могли бы использовать глаголы PCRE '(* SKIP) (* F). Тем не менее, это будет длинное регулярное выражение. Возможно, вы можете сопоставить первый тип подстрок, а затем разделить их, чтобы получить остальное? –
@Rob, потому что я разбираю строку. Мне нужны все части. Некоторые части соответствуют моей структуре свойств. Но теперь мне нужно все другое. 'Regex.IsMatch' проверяет, есть ли совпадение или нет. ДА Есть несколько совпадений. Вся строка будет сопоставлена. 'regex.IsMatch' мне не поможет. –