RegEx для замены значения, включая новые строки - PullRequest
0 голосов
/ 11 ноября 2008

У меня есть фрагмент, похожий на приведенный ниже.

string bodyTypeAssemblyQualifiedName = "XXX.XX.XI.CustomerPayment.Schemas.r1.CustomerPayments_v01, XXX.XX.XI.CustomerPaym" +
                "ent.Schemas.r1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ac564f277cd4488" +
                "e";

Я бы хотел использовать регулярное выражение в C #, чтобы получить:

string bodyTypeAssemblyQualifiedName = null;

Я пытался использовать RegEx, как показано ниже, но он не соответствует переводу строки ...

bodyTypeAssemblyQualifiedName\s=\s(?<location>.*?);

Ответы [ 3 ]

1 голос
/ 11 ноября 2008

Это работает:

(<= строка \ sbodyTypeAssemblyQualifiedName \ s = \ s?) (S: [^;] *) (? =;) </p>

Что эквивалентно:

  1. после строки "строка bodyTypeAssemblyQualifiedName = "
  2. Включить одну строку (трактовать \ r \ n как любой другой персонаж) (это то, что (? s:) делает)
  3. соответствует каждому символу, который не является точкой с запятой
  4. пока не будет достигнута точка с запятой
1 голос
/ 11 ноября 2008

@ Уилл, заменив точку классом отрицанных символов, вы устранили необходимость в однострочном модификаторе. И если я правильно читаю вопрос, вам также не нужно использовать обходные пути.

bodyTypeAssemblyQualifiedName\s+=\s+(?<location>[^;]+);
0 голосов
/ 11 ноября 2008

Вы можете попробовать

bodyTypeAssemblyQualifiedName\s=\s(?<location>[.\n]*?);

Или вы установили RegexOptions.Singleline для вашего шаблона.

RegexOptions.Singleline - Указывает однострочный режим. Изменяет значение точки (.), Чтобы она соответствовала каждому символу (вместо каждого символа, кроме \ n).

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