Во первых извините за мой плохой английский. Я новичок в регулярном выражении. Пытаюсь сделать автоматический перевод. Например, у меня есть такой текст:
/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" !" Мне это очень сложно.
@ user3783243 на самом деле это приводит к хорошему вопросу - где это будет запускаться? Это может повлиять на реализацию регулярного выражения.
@vlaz Думаю, наверное, я переведу регулярное выражение с PHP
Может у вас работает regex101.com/r/rsx2QU/2?
@ user3783243 Большое спасибо! Осталась одна проблема. Внутри кавычки, как у "Hello "world" !"
Метки инкапсуляции должны быть уникальными или экранированными. Все, что строит вашу строку, должно быть изменено.
@ user3783243 Я пробовал использовать node. Почему у меня \"%\d+\.\d+"(*SKIP)(*FAIL)|"[^"]+"/: Nothing to repeat? :(
Похоже на ошибку JS. Это регулярное выражение предназначалось для PHP, использующего PCRE.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как насчет?
<?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)
Вы можете использовать глаголы PCRE, если это выполняется в PHP.