Извлечь числа из строки, не начинающейся с символа комментария, используя регулярное выражение - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь заменить все цифры не в разделе комментариев.Вот пример файла для исправления:

/* 2018-01-01 06:00:55 : realtime(0.002) --status(10)-- ++numretLines(0)++  --IP(192.168.1.5) PORT(22)-- queryNo(2)  comment[TO: Too much time]  TYPE[QUERY 4.2]  */
select count(*) from table where id1 = 41111 and id2 = 221144
GO

По сути, я хотел бы заменить числа в строках, которые не начинаются с "/*".

Я предложил следующее регулярное выражение:/^(?!\/\*)(?:.+\K(\d+?))/gmU

Но мне удается извлечь только первое число каждой строки, не начиная с "/*".Как я могу расширить это, чтобы получить все номера этих строк?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

На основе комментария Wiktor Stribiżew я использовал \/\*.*?\*\/(*SKIP)(*F)|-?\b\d+(\.\d+)? для извлечения чисел, включая десятичные и отрицательные значения.

0 голосов
/ 28 ноября 2018

Предполагая, что ваш движок регулярных выражений (о котором вы не сказали) поддерживает look behind и look ahead, вы можете использовать это регулярное выражение:

(?<!^\/\*.*)(?:(?<=\s)\d+(?=\s))+

Регулярное выражение начинается с использования negative look behind, смотрядля start of line, за которыми следуют slash и star.

Затем создается новый negative look behind для White Space, затем любое число digits, за которым следует negative look ahead для White Space.Эта группа repeated any number of times.

Вам необходимо установить флаг global и 'multiline'.

Регулярное выражение пропускает числа, не окруженные пробелами (например, 'id1')

...