Задать вопрос
Ответы пользователя по тегу Регулярные выражения
  • Как работает ленивость в регулярных выражениях?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Ленивые квантификаторы - повторять минимальное число раз. Жадные - максимальное число раз. В данном случае проще всего просто выбрать весь текст вокруг целевого слова до слэшей:
    /[^\/]*МОСКВА[^\/]*/g
    Второй вариант просто - разделить строку на группы, если вам надо работать с несколькими группами. Например:
    /(.*?)\/\/(.*?)\/\/(.*?)\/\/(.*)/

    Пишу регулярку //.+?МОСКВА.+?// , вроде указана ленивость, но захватывает она кусок // фио персонажа // адрес МОСКВА адрес // , то есть захватывает лишнего, а именно - ФИО персонажа

    Возможно вы подумали, что регулярное выражение будет делать поиск назад от слова - но нет, регулярка работает слева направо и по-порядку. В данном случае найти пару слешей - вот оно и находит первую же пару, далее любой символ один или более раз до слова "МОСКВА". Рекомендую почитать мануалы по регулярным выражениям.
    Ответ написан
    Комментировать
  • Что делает приведенное регулярное выражение?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Именно это и непонятно, для каких целей может потребоваться экранировать скобку в регулярном выражении, направленном на поиск файлов по названию.

    Либо просто на всякий случай либо для экранирования там, где это строка применяется и где фигурные скобки несут какой-то свой смысл.
    Ответ написан
    Комментировать
  • (regexp) Как исключить из поиска ненужные вхождения?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Итак, у вас там файл в формате JSON. Это специальный машиночитаемый формат данных. Более правильное решение в вашем случае выглядит следующим образом:
    1. Открываем JSON файл в любом редакторе, который его поддерживает
    2. Приводим его специальной командой в нормальный вид
    3. Смотрим на его структуру и определяем поля, с которыми надо работать - в вашем случае originalText и text
    4. Далее пишем простейший скрипт на JS (или любом другом вашем любимом ЯП) для чтения и парсинга:
      import { readFileSync } from "node:fs"
      let data, result = []
      try {
          data = JSON.parse(readFileSync('file', 'utf8'))
      } catch (e) {
          console.error('Ошибка загрузки файла', e)
      }
    5. Реализуем требуемую вам логику по работе с текстом:
      for(let item of data) // В данном случае, предполагается, что data - это массив
      {
          // Полезная работа
      }
    6. А после - сохраняем результат в другой файл:
      fs.writeFileSync("result.json", JSON.stringify(result));


    Т.о. вся работа сводится к работе с однозначным и конкретным куском текста. У вас классический случай Проблемы XY.
    Ответ написан
  • Почему не экранирует символ "+"?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    '2+'.search(/\+/)
    Ответ написан
    Комментировать