Граница слова регулярного выражения, включая дефис

#regex

Вопрос:

С помощью регулярного выражения s{2}b я пытаюсь заменить последние два пробела перед словом на канал (|) , используя границу слова, но он игнорирует число -18.055,81 . С каким выражением я также могу получить два последних пробела до -18.055,81 этого ?

Пример:

 1234 - This is a test        18.055,81        -18.055,81        0,00        0,00        18.055,81
 

Результаты в:

 1234 - This is a test       |18.055,81        -18.055,81       |0,00       |0,00       |18.055,81
 

Чего я хочу:

 1234 - This is a test       |18.055,81       |-18.055,81       |0,00       |0,00       |18.055,81
 

Комментарии:

1. Если Lookaheads поддерживаются, вы можете использовать s{2}(?=S) .

Ответ №1:

Вы можете использовать

 s{2}(?=-?d)
s{2}(?=-?w)
 

Смотрите демонстрацию регулярных выражений. Подробные сведения:

  • s{2} — два пробельных символа
  • (?=-?d) — за которыми сразу же следует необязательный дефис, а затем цифра.

Если ожидаются какие-либо другие символы слов (буквы или подчеркивания), замените d на w .

Комментарии:

1. Спасибо! Это именно то, что я искал 🙂