Шаблон Regex - это простой текст или правило? - PullRequest
0 голосов
/ 27 февраля 2009

Есть ли относительно простой способ распознать шаблон Regex как простой текст или как правило?

Один пример. @"[A-Z0-9]" - это правило, а @"\\[A-Z0-9\\]" - простой простой текст (синтаксис строки C #)

Ответы [ 2 ]

1 голос
/ 27 февраля 2009

Если не считать '' 'то есть экранированных символов регулярного выражения, я не могу думать ни о чем из головы.

Поскольку использование @ копирует строковый литерал дословно, попробуйте -

1.Найдите все '[' / '*' / '+' / 'все другие символы regex' и убедитесь, что предыдущий символ представляет собой '\'.

2. Другой способ - написать грамматику / регулярное выражение, чтобы проверить это. Я думаю, вам понадобится грамматика. В любом случае (1) выше проще.

Некоторые строковые методы могут помочь проверить вышеизложенное (например, IndexOf ...).

В любом случае регулярное выражение - это просто строка, если и до тех пор, пока оно не будет скомпилировано и использовано. Я до сих пор не понимаю, почему ты хочешь это сделать. Если вы хотите, чтобы что-то было правильно сформированным регулярным выражением, это проще. (Я не знаю, как это можно сделать на C #, см. Ответ Свиша.)

Примечание
1. Регулярное выражение всегда является правилом, потому что регулярное выражение "XYZ" является правилом, которое всегда соответствует только одному "XYZ" и не соответствует ничему другому.

Надеюсь, это поможет.

0 голосов
/ 27 февраля 2009

Что ты имеешь в виду? Регулярное выражение всегда пишется в виде строки. Не имеет значения, как вы пишете строку, она всегда будет строкой.

Если вы хотите проверить, является ли строка допустимым регулярным выражением с другой стороны (если это то, что вы спрашиваете), вы всегда можете сделать это:

try
{
   new Regex(someRegexString);
}
catch(ArgumentException)
{
  // Regular expression parsing error. I.e: Not a valid regular expression.
}

Теперь, если вы хотите использовать строку регулярного выражения, вы можете использовать ее как строку или как регулярное выражение. Использование его в качестве строки аналогично использованию его в качестве строки ... Использование его в качестве регулярного выражения означает создание объекта Regex (или использование некоторых статических методов Regex). Если вы затем используете его как правило, или для замены текста, или для извлечения чего-либо, или чего-то еще, это ничего не меняет. Регулярное выражение все еще является регулярным выражением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...