Прежде всего, я не очень хорошо разбираюсь в регулярном выражении. Но я пытаюсь создать регулярное выражение для соответствия определенной строке, а вместо нее - пропустить первый символ строки-ответчика, используя положительный взгляд вперед. Подробнее см. Ниже.
Test String asdf.wakawaka asdf.waka df.waka [df.waka(df.waka _df.waka {df,waka
RegEx (?=[^\w])df\.
Заменяющая строка kkk.
Ожидаемый результат asdf.wakawaka asdf.waka kkk.waka [kkk.waka(kkk.waka _df.waka {df,waka
Но регулярное выражение выше dos не находит никакого совпадения, поэтому оно ничего не заменяет в результате и дает исходную тестовую строку в результате.
Без положительного взгляда (пропустить первую стратегию персонажа) это соответствует моему требованию. см. пример соответствия регулярному выражению regex101.com
С положительным взглядом, дающим неожиданные результаты регулярного выражения с положительным взглядом aheah на regex101.com
Заранее благодарю за любую помощь.
Использование [^\w]
означает, что вы хотите совместить и использовать символ, отличный от символа слова, перед матчем, который требуется заменить.
Однако этот символ потребляется, и вы не можете его восстановить, не забирая его первым. Вы можете использовать подход Гурмана для соответствия /(^|\W)df\./g
и заменить на '$1kkk.
, но вы также можете использовать границу слова:
\bdf\.
JS demo:
var s = "asdf.wakawaka asdf.waka df.waka [df.waka (df.waka _df.waka {df,waka";
console.log(
s.replace(/\bdf\./g, 'kkk.')
);
Однако, если вы не хотите заменять df.
в начале строки, используйте
var s = "df. asdf.wakawaka asdf.waka df.waka [df.waka (df.waka _df.waka {df,waka";
console.log(
s.replace(/(\W)df\./g, '$1kkk.')
);