REGEX исключает, если есть тире перед числом и если внутри другой строки - PullRequest
0 голосов
/ 13 сентября 2018

Я пытался написать регулярное выражение, которое точно соответствует заявленному в заголовке.Мне нужно найти все вхождения xA, или xkA, или xmA (и вариации, например, xk A или xk A) для последующего форматирования этих ампер: x A, x kA, x mA.

К сожалению, срегулярное выражение у меня есть он выбирает число + A всякий раз, когда он находит его:

F- 2A WACEGF 2A OKR 10 мA AC

F- 3A WACEGF 3A OKR 10k A AC

C- 7A WACEGC 7A OKR 20 м A

Мое регулярное выражение:

([0-9]+)([m|k])? ?A

В сети я нашел какое-то решение:

[^- a-zA-Z]([0-9]+)([µ|µ|m|M|k|G|]) ?A

, но оно не работает во время работы в Dreamweaver (и я ДОЛЖЕН использовать его в DW, это частьбольшая команда) - она ​​«съедает» часть строки в обратной ссылке, например,«10» из «1000»

Отредактировано:

\b([0-9]+)([µmMkG]|µ)\s*A 

(?<![0-9])([0-9]+)([µmMkG]|&micro;)\s*A

Первый выбирается следующим образом: enter image description here

Второйничего не выбирает: (

Примечание. Я пытаюсь не удалять символ перед номером, то есть > или /, которые удаляются, если я использую следующее:

enter image description here

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете использовать следующее регулярное выражение:

(^|[^\w-])\b([0-9]+)([µmMkG]|&micro;)? ?A

При замене учтите, что вы можете получить доступ к тексту, захваченному с помощью групп захвата, используя $ + цифру, обозначающую группу.Например, (^|[^\w-]) текст доступен через $1, ([0-9]+) текст доступен через $2, ([µmMkG]|&micro;) можно получить через $3.

См. Демонстрационную версию regex .

Подробности

  • (^|[^\w-]) - Группа 1: начало строки или любой символ, кроме букв, цифр, подчеркивания и -
  • \b - граница слова
  • ([0-9]+) - Группа 2: одна или несколько цифр
  • ([µmMkG]|&micro;)? - Группа 3 (необязательно): µ, m, M, k, G или &micro;
  • ?A- an optional space and then A`.
...