some text I want to capture. <tag> junk I don't care about</tag> more stuff I want.
Есть ли простой способ написать регулярное выражение, которое фиксирует первое и третье предложения в одном захвате?Объединение захватов в регулярном выражении
some text I want to capture. <tag> junk I don't care about</tag> more stuff I want.
Есть ли простой способ написать регулярное выражение, которое фиксирует первое и третье предложения в одном захвате?Объединение захватов в регулярном выражении
Насколько мне известно. Обычно поэтому функции поиска и замены регулярных выражений позволяют вам в первую очередь ссылаться на несколько групп захвата.
К сожалению, нет, это невозможно. Решение состоит в том, чтобы захватить два отдельных захвата, а затем связаться после факта.
Согласно этой старой теме на этом сайте:
Вы также могли бы рассмотреть возможность зачистки ненужных данных, а затем захватить.
data = "some text to capture. <tag>junk</tag> other stuff to capture".
data = re.replace('<tag>[^<]*</tag>', data, "")
data_match = re.match('[\w\. ]+', data)
Групповой сбор подряд, поэтому вы не можете. Вы можете сделать это в одном разборе с регулярным выражением, как показано ниже, и присоединиться к линии в коде
^(?<line1>.*?)(?:\<\w*\>.*?\</\w*\>)(?<line3>.*?)$
вот не способ регулярного выражения, разделить на </tag>
, пройти через элементы массива, найти <tag>
, затем разделить на <tag>
и получить первый элемент. например
>>> s="some text I want to capture. <tag> junk I don't care about</tag> more stuff I want. <tag> don't care </tag> i care"
>>> for item in s.split("</tag>"):
... if "<tag>" in item:
... print item.split("<tag>")[0]
... else:
... print item
...
some text I want to capture.
more stuff I want.
i care
Используйте split()
функцию asp.net, чтобы сделать то же самое.