结合正则表达式中的捕获

时间:2010-02-26 03:29:02

标签: asp.net regex

some text I want to capture. <tag> junk I don't care about</tag> more stuff I want.

有没有一种简单的方法来编写一个捕获一次捕获中第一个和第三个句子的正则表达式?

5 个答案:

答案 0 :(得分:1)

您还可以考虑剥离不需要的数据然后捕获。

data = "some text to capture. <tag>junk</tag> other stuff to capture".
data = re.replace('<tag>[^<]*</tag>', data, "")
data_match = re.match('[\w\. ]+', data)

答案 1 :(得分:0)

据我所知。通常这就是为什么正则表达式搜索和替换功能允许您首先引用多个捕获组。

答案 2 :(得分:0)

不幸的是,不可能。解决方案是捕获两个单独的捕获,然后在事后接触。

根据本网站上的旧帖子:

Regular expression to skip character in capture group

答案 3 :(得分:0)

群组捕获是连续的,所以你不能。您可以使用下面的正则表达式在一个解析中执行此操作,并加入代码中的行

^(?<line1>.*?)(?:\<\w*\>.*?\</\w*\>)(?<line3>.*?)$

答案 4 :(得分:0)

这是一种非正则表达方式,在</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

使用asp.net的split()功能也可以这样做。