Написание расширенного регулярного выражения

Во первых извините за мой плохой английский. Я новичок в регулярном выражении. Пытаюсь сделать автоматический перевод. Например, у меня есть такой текст:

/begin CHARACTERISTIC

    AccPed_trqEngLow_MAP
    "Kennfeld für AWD"
    MAP
    0x801B425C
    Map_Xs16Ys16Ws16
    1500.000
    Trq
    -500.0000
    1000.000

    FORMAT "%8.3"
    EXTENDED_LIMITS -3276.800 3276.700


    /begin AXIS_DESCR

        STD_AXIS
        Epm_nEng
        EngN
        16
        0.00
        10000.00

        FORMAT "%8.2"
        EXTENDED_LIMITS -16384.00 16383.50
        DEPOSIT ABSOLUTE

    /end AXIS_DESCR

    /begin AXIS_DESCR

        STD_AXIS
        AccPed_rAPP
        Prc
        8
        0.00
        100.0000

        FORMAT "%8.4"
        EXTENDED_LIMITS -400.0000 399.9878
        DEPOSIT ABSOLUTE

    /end AXIS_DESCR

/end CHARACTERISTIC

Мне нужно выбрать все строки в "", например "Kennfeld für AWD", но не выбирать, где начинается с % ("%8.3") Возможно ли это по крайней мере? Заранее спасибо .. P.S строка может содержать внутри кавычки, как у "Hello "world" !" Мне это очень сложно.

Вы можете использовать глаголы PCRE, если это выполняется в PHP.

user3783243 08.11.2018 16:45

@ user3783243 на самом деле это приводит к хорошему вопросу - где это будет запускаться? Это может повлиять на реализацию регулярного выражения.

VLAZ 08.11.2018 16:47

@vlaz Думаю, наверное, я переведу регулярное выражение с PHP

Dewagg 08.11.2018 16:49

Может у вас работает regex101.com/r/rsx2QU/2?

user3783243 08.11.2018 16:56

@ user3783243 Большое спасибо! Осталась одна проблема. Внутри кавычки, как у "Hello "world" !"

Dewagg 08.11.2018 16:58

Метки инкапсуляции должны быть уникальными или экранированными. Все, что строит вашу строку, должно быть изменено.

user3783243 08.11.2018 17:00

@ user3783243 Я пробовал использовать node. Почему у меня \"%\d+\.\d+"(*SKIP)(*FAIL)|"[^"]+"/: Nothing to repeat? :(

Dewagg 08.11.2018 17:23

Похоже на ошибку JS. Это регулярное выражение предназначалось для PHP, использующего PCRE.

user3783243 08.11.2018 17:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Как насчет?

<?php
$string = '
WHATVER "Kennfeld für AWD"
FORMAT "%8.3"
"Hello "World" !"
FOO
BAR
FORMAT "%8.2"
FORMAT "%8.4"
/end CHARACTERISTIC';

preg_match_all('/"((?!\%).+)"/', $string, $matches, PREG_PATTERN_ORDER);

echo "<pre>";
print_r($matches);
echo "</pre>";
Ответ принят как подходящий

/\"([^%].*)\"/g соответствует всем строкам в кавычках, которые не начинаются с символа%.

В javascript (es6) это будет:

const example = `
/begin CHARACTERISTIC

    AccPed_trqEngLow_MAP
    "Kennfeld für AWD"
    MAP
    0x801B425C
    Map_Xs16Ys16Ws16
    1500.000
    Trq
    -500.0000
    1000.000

    FORMAT "%8.3"
    EXTENDED_LIMITS -3276.800 3276.700

/end CHARACTERISTIC
`

let re =  /\"([^%].*)\"/g;
let results = example.match(re);

console.info(results)

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