Несколько вариантов регулярного выражения с С# Regex
Предположим, что у меня есть это:
Regex.Replace("aa cc bbbb","aa cc","",RegexOptions.IgnoreCase);
Но мне также нужно игнорировать белые пробелы. Итак, я нашел вариант IgnorePatternWhitespace
, но как добавить несколько вариантов в одно регулярное выражение? Replace?
Что-то вроде:
Regex.Replace("aa cc bbbb", "aa cc", "",
RegexOptions.IgnoreCase + RegexOptions.IgnorePatterWhitespace);
Update:
Спасибо за ответы, но этот вариант не работает: вот пример:
Regex.Replace("aa cc bbbb", "aacc", "",
RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace);
Ответы
Ответ 1
IgnorePatternWhitespace
Устраняет невыпущенное пустое пространство из шаблона и позволяет комментировать отмечен значком #. Однако значение IgnorePatternWhitespace не влияет или исключает пробел в классах символов.
так:
string result = Regex.Replace("aa cc bbbb","aa|cc","",RegexOptions.IgnoreCase).Trim();
Ответ 2
Используйте побитовое ИЛИ (|
)
Regex.Replace("aa cc bbbb",
"aa cc",
"",
RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace);
Ответ 3
Regex.Replace("aa cc bbbb","aa cc","",RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace);
Используйте оператор |
.
Изменить:
Вы полностью ошиблись. RegexOption.IgnorePatterWhitespace
игнорирует пробелы в регулярном выражении, чтобы вы могли:
string pattern = @"
^ # Beginning of The Line
\d+ # Match one to n number but at least one..
";
Однако вы считаете, что включение пробелов делает "aa cc bbbb"
в "aaccbbbb"
, что, к счастью, неверно.
Ответ 4
Согласно MSDN:
Побитовая ИЛИ комбинация значений перечисления RegexOption.
Поэтому просто используйте OPT_A | OPT_B
Ответ 5
Вы можете иметь столько RegexOptions, сколько хотите, просто "ИЛИ" с "|".
Например...
RegexOptions.Compiled | RegexOptions.IgnoreCase