2013-07-02 3 views
0

Я попытался сначала найти Stackoverflow, чтобы узнать, могу ли я найти решение для того, что я пытаюсь сделать с регулярным выражением, но я не уверен, как даже спросить об этом вопрос. На самом деле, я не уверен, правильно ли сформулировал свой вопрос ...Как не разобрать весь текст между тегами

В основном я пытаюсь сделать то, что, вероятно, является действительно простым поиском регулярных выражений и опускать.

   <tr> 
      <td><input type="checkbox" name="country" id="chkCountry" checked="1" disabled="1"></td> 
      <td><label for="chkCountry">Country</label></td> 
      <td><label for="chkCountry">UNITED STATES</label></td> 
     </tr> 

Я хотел бы разобрать текст «UNITED STATES» из между этими тегами без также получать текст «Страна»:

<td><label for="chkCountry"> и </label></td>

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

(?<=<td><label for="chkCountry">).*?(?=</label></td>) 

и это будет захватывать оба т о которых я упоминал выше. Как я могу сформулировать это выражение, чтобы захватить только «СОЕДИНЕННЫЕ ШТАТЫ»?

Текст «Страна» является статическим и всегда будет там, но текст «СОЕДИНЕННЫЕ ШТАТЫ» всегда различается, заполняя текст другими названиями стран. Поэтому в основном я хочу очистить страну, которая появляется там.

Я благодарю вас за любую помощь.

+0

Если вы уже знаете обход, то негативный взгляд не должен быть слишком сложным для вас? – Bergi

+0

Я бы не стал делать все это с регулярным выражением. просто матч дважды и второй матч. – sgroves

+0

Мне нужно использовать регулярное выражение, потому что я использую старую версию Winautomation, которая дает мне возможность регулярного выражения или точного поиска слов, что невозможно, потому что страна меняется. Я новичок в регулярном выражении, и сейчас я изучаю lookahead и Negative Lookaround, чтобы попытаться понять это. – nycdude

ответ

0

<[^<]+?> < - это HTML тег регулярное выражение

Итак, вам просто нужно заменить это регулярное выражение (<[^<]+?>)|(Country) с пустой строкой «» и что оставит вас только «Соединенные Штаты»

+0

@Anirudh Я использую Winautomation 3 для работы, но я тестирую его с помощью Expresso – nycdude

+0

@harpo Да, я много нашел о разборе html с регулярным выражением на SO – nycdude

+0

так, '(<[^<]+?>) | (Страна)' regex может принимать не заботясь о том, что «СОЕДИНЕННЫЕ ШТАТЫ» вы ищете? – Angga

0

Если вам нужно чтобы сделать это полностью с регулярным выражением, попробуйте использовать negative lookahead(?!) конструкции):

(?<=<td><label for="chkCountry">)(?!Country).*?(?=</label></td>) 

(?!Country) - это отрицательный looka глава. Как и все lookaheads и lookbehinds, это утверждение с нулевой шириной, что означает, что оно соответствует позиции между символами, а не шаблоном самих символов.

Таким образом, это соответствует «позиции в строке, за которой не следует Country». Двигатель регулярного выражения должен был смотреть вперед, чтобы определить это. Обратите внимание, что если бы у вас была страна с именем CountryTown, она не соответствовала бы полному регулярному выражению, потому что отрицательный результат не сработает.

+0

'. *' Должно быть '. *?' – Anirudha

+0

, что бы даже сделать что-нибудь? '*' уже равен нулю или больше – sgroves

+0

с '. *' вы бы соответствовали ** последнему ** '' ..with '. *?' он соответствовал бы первому '' – Anirudha

 Смежные вопросы

  • Нет связанных вопросов^_^