Невозможно разобрать прямоугольную скобку - PullRequest
0 голосов
/ 23 сентября 2019

У меня проблемы при реализации логики xpath.Я пытаюсь выполнить синтаксический анализ, если я получу свой результат, как показано в примере ниже:

//html:h1/span[1]

Я хочу поставить :html перед этой строкой всякий раз, когда возникает прямоугольная скобка, как показано ниже, как ожидаемый результат:

//html:h1/html:span[1]

Если мой пример:

//html:h1/span/div

Здесь Прямоугольная скобка отсутствует, поэтому я хочу сделать строку такой, какая она есть.

Вот еще один пример:

//html:div/span[5]/div/span

Я хочу получить ожидаемый результат, как показано в примере ниже:

//html:div/html:span[5]/div/span

Я уже пробовал поиск в Google и синтаксический анализ с помощью регулярных выражений, но не смог найти решение для точного соответствия.

РЕДАКТИРОВАНИЕ:

Просто чтобы очистить, это не просто тег span.Это может быть что-то вроде a, p или других html-тегов

Некоторые сценарии:

//html:div[@id='ins_storybody']/p[2]

Ожидаемый результат должен быть:

//html:div[@id='ins_storybody']/html:p[2]

Вот еще один сценарий:

//html:div[@id='ins_storybody']/p[2]/div/span/li[@id='ins_storybody']

Ожидаемый результат:

//html:div[@id='ins_storybody']/html:p[2]/div/span/li[@id='ins_storybody']

Iвыяснил способ, которым можно было бы использовать regex: match(/\[.@?\]/g), но не смог получить прикрепленную строку с прямоугольной скобкой, чтобы я мог ее заменить.Есть предложения?

1 Ответ

0 голосов
/ 23 сентября 2019

Я не совсем уверен, чего именно вы хотите добиться, но следующий код проверяет, есть ли где-нибудь во входной строке [, и если это так, он вставляет html: прямо перед span,Обратите внимание, что это не будет работать, если во входной строке нет span.

str = '//html:h1/span[1]';

q = str.includes('[');

if (q) {
	i = str.indexOf('span');
	newstr = str.slice(0,i) + 'html:' + str.slice(i);
} else {
	newstr = str;
}

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