使用正则表达式匹配每行中的第一个模式

时间:2016-12-12 11:36:59

标签: python regex python-3.x

在Python中使用正则表达式,尝试解析下面的数据。

数据事项1 =

<a class="screener-link-primary" href="quote.ashx?t=IDXG&amp;ty=c&amp;p=d&amp;b=1">IDXG</a>, 
<a class="screener-link-primary" href="quote.ashx?t=INVN&amp;ty=c&amp;p=d&amp;b=1">INVN</a>, 
<a class="screener-link-primary" href="quote.ashx?t=SWC&amp;ty=c&amp;p=d&amp;b=1">SWC</a>, 
<a class="screener-link-primary" href="quote.ashx?t=NE&amp;ty=c&amp;p=d&amp;b=1">NE</a>, 

正则表达式

pattern = "[A-Z][A-Z]{1,5}(?![A-Z])"
match = re.findall(pattern,thing1)
print(match)

我得到的结果是每一行中出现两次。

['IDXG', 'IDXG', 'INVN', 'INVN', 'SWC', 'SWC', 'NE', 'NE']

我想要的结果只是第一次匹配每一行中的模式。

['IDXG', 'INVN', 'SWC', 'NE']

我知道如果删除全局代码,它会在one match.

之后停止

如果我单独执行每一行,它会给我first match.

是否有一种优雅的方法可以在Python中首次出现每一行?

2 个答案:

答案 0 :(得分:1)

刚添加一个&lt;到你的第二个链接:

[A-Z]{1,5}(?![A-Z<])

Your updated link

答案 1 :(得分:0)

试试这个正则表达式:

pattern = "([A-Z][A-Z]{1,5}(?!\&)).*\n"
match = re.findall(pattern,thing1)