javascript extract ..stop на первом подчеркивании в значении - PullRequest
1 голос
/ 09 ноября 2019

Попытка извлечь hostname-rt45 из hostname-rt45_34_we_35. Я использую /(.)_?./g. Это не похоже на работу. Я просмотрел документацию по регулярным выражениям. Мысли используя? сделает его жадным и остановится на первом подчеркивании. Чего мне не хватает?

на https://regexr.com/, Я пробовал.

/(.*)_?.*/g
/(.*)_.*/g

Ответы [ 3 ]

1 голос
/ 09 ноября 2019

Вы можете найти последовательность не _ символов с подчеркиванием после них (положительный взгляд) - ( RegExr пример ):

const regex = /[^_]+(?=_)/;
const str = 'hostname-rt45_34_we_35';

const [result] = str.match(regex);

console.log(result);
1 голос
/ 09 ноября 2019

Более простое решение без регулярных выражений:

var host = 'hostname-rt45_34_we_35';
console.log(host.substring(0,host.indexOf('_')));

indexOf() возвращает индекс первого найденного подчеркивания.

0 голосов
/ 09 ноября 2019

^[^_]+ может работать нормально.

const regex = /^[^_]+/g;
const str = `hostname-rt45_34_we_35
`;
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(match);
    });
}

Если вы хотите упростить / изменить / изучить выражение, это объяснено на верхней правой панели regex101.com . Если хотите, вы также можете посмотреть в этой ссылке , как она будет сопоставляться с некоторыми примерами входных данных.


RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

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