Как мне найти только новые строки в регулярном выражении? - PullRequest
2 голосов
/ 13 июня 2019

У меня есть регулярное выражение, которое находит символы новой строки, закодированные в строках как \n (не фактический символ новой строки), но также находит закодированные экранированные символы новой строки (\\n), как перед словом «что-нибудь» в строке ниже.

var rg = '/(\\n)/g'
var str = 'so you can do pretty much \\nanything you want with it. \n\nAt runtime Carota has'

Как мне найти все новые строки и ни один из сбежавших новых строк?

Вот ссылка с примером. https://regexr.com/4fna7

Ответы [ 3 ]

2 голосов
/ 13 июня 2019

Возможно, вам нужен негативный взгляд назад .Это используется для поиска символов за текстом, но не для включения его в захват.Ваше переписанное регулярное выражение будет выглядеть так:
(?<!\\)(\\n)

1 голос
/ 13 июня 2019

Один из способов сделать это - начать с отрицательного класса символов, чтобы убедиться, что вы не берете двойную обратную косую черту:

var rg = '/[^\\](\\n)/g'
var str = 'so you can do pretty much \\nanything you want with it. \n\nAt runtime Carota has'
0 голосов
/ 13 июня 2019

Я предполагаю, что вы используете JavaScript.В этом случае вы можете просто использовать литералы Regex примерно так:

/\n/

Это будет соответствовать всем символам новой строки.Если вы не можете использовать литерал Regex, JS также предлагает конструктор, который принимает строку

new RegExp('\\n')

Чтобы соответствовать \\n, вам необходимо экранировать обратную косую черту:

/\\n|\n/

с конструктором:

new RegExp('\\\\n|\\n')

Надеюсь, это поможет.

...