Regex: поиск слишком длинного пространства между двумя строками

У меня есть файл XML, который я пытаюсь проанализировать в своей базе данных, но получаю сообщение об ошибке, в котором указано, что определенное поле превышает максимальное число символов (2000). Я указал указанное поле, но в моей ошибке нет номера строки, поэтому мне нужно найти и удалить нарушителя (ей) в самом XML.

Ниже приведен образец. Мне нужно найти записи, где символы между первым появлением "CCCStmts Correction" и "RoAmts" превышают 2000 символов. Я использую Notepad++ и могу только думать, что это будет работать с регулярным выражением. Идеи?

   <CCCStmts Correction="sample text" />
      <CCCStmts Correction="sample text" />
      <CCCStmts Correction="sample text" />
      <CCCStmts Correction="sample text" />
      <CCCStmts Correction="sample text" />
      <CCCStmts Correction="sample text" />
      <CCCStmts Correction="sample text" />
      <RoAmts PayType="x" AmtType="x" TotalAmt="x" />

1 ответ

Regex не является ответом. Конечно, вы можете сделать это с помощью регулярных выражений, но я предполагаю, что вы использовали API для программного представления XML в модели? Или, даже если нет, вы анализируете его, чтобы передать соответствующее значение, содержащееся в XML, в вашу базу данных. Поэтому, как только вы получите значение, просто проверьте его длину и отправьте его, если оно соответствует требованиям поля.

Чтобы проверить длину строки, просто используйте...

// if the length is 2000 or less
if (string.length()` < 2001) {
    //your routine
}

... и он пропустит любое значение, состоящее из 2001+ символов.

Этот подход не требует дополнительной итерации исключительно для поиска и не требует каких-либо замен. Это будет намного аккуратнее и намного эффективнее.

Другие вопросы по тегам