Во-первых, извините за мой плохой английский. Я новичок с регулярным выражением. Я пытаюсь сделать автоматический перевод. Например, у меня есть текст вроде:
/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" !"
Это очень сложно для меня.
/\"([^%].*)\"/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.log(results)
Как насчет?
<?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>";