Получение всего, кроме случаев, когда начинается с \ t (отступ) - PullRequest
0 голосов
/ 30 декабря 2018

Я хотел бы знать, есть ли способ сопоставить все в тексте, кроме случаев, когда начинается с \ t (отступ символа)В настоящее время я пытаюсь добиться этого с помощью литерала /[^\t]+\t/gm, но он не работает должным образом, как вы можете видеть здесь :

RegExr был создан gskinner.com и являетсягордо принимается Media Temple.

Отредактируйте выражение и текст, чтобы увидеть совпадения.Переверните спички или выражение для деталей.Поддерживаются разновидности PCRE и Javascript для RegEx.

Боковая панель содержит Cheatsheet, полный справочник и справку.Вы также можете сохранять и делиться с сообществом и просматривать шаблоны, созданные или добавленные вами в «Мои шаблоны».

Explore results with the Tools below. Replace & List output custom results. Details lists capture groups. Explain describes your expression in plain English.
    something
    something2

Все до первого сопоставляется.Желаемый результат - остановиться на «английском» слове.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Как я понимаю из вашего примера, вы хотите сопоставить все строки, которые не начинаются с символа \t.

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

^[^\t\n][\w\W]*?$
  • ^ - Начало строки.
  • [^\t\n] - Утверждать, чтобы не совпадать с началом строки с табуляции или пустым.
  • [\w\W]*? - Совпадение с любым нулем или более времени (ленивый режим).
  • $ - Конец строки.

Демонстрация

Пример кода

const regex = /^[^\t\n][\w\W]*?$/gm;
const str = `Explore results with the Tools below. Replace & List output custom results. Details lists capture groups. Explain describes your expression in plain English.
	something
	something2
Hey how are you
	is this what you wanted to achieve
string with 	tab inside

		hello
hello 	 				end

v
v


`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}
0 голосов
/ 30 декабря 2018

В данный момент у вас есть два совпадения - одно совпадение, содержащее большинство текста, и остановка на символе табуляции непосредственно перед something.Затем у вас есть секунда совпадение, содержащее something и следующий символ табуляции на следующей строке.

Поскольку это звучит так, как будто вы на самом деле не хотите совпадать с символом табуляции,не сопоставлять \t - вы можете использовать \S, чтобы убедиться, что последний найденный символ не является пробелом.Кроме того, чтобы совпадения начинались в начале строки, используйте ^ для привязки (чтобы текст после \t не совпадал):

^[^\t]+\S
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...