我正在尝试使用python3从字符串中提取ID。 regex返回多于一项,尽管文本中只有一项:
text_total ='Lor Ippsum参考。 116519LN Perlmutt'
>>> re.findall(r"Ref\.? ?(([A-Z\d\.]+)|([\d.]+))", text_total)
[('116519LN', '116519LN', '')]
我正在寻找一个经过修剪的结果,如果可能的话,无论如何都不会出现列表。
这就是为什么我的原始行是
[x for x in re.findall(r"Ref\.? ?(([A-Z\d\.]+)|([\d.]+))", text_total)][0]
正则表达式有一个OR,因为我也在尝试匹配
Ippsum编号参考。 1166AB.39AZU2.123传说中的Ippsum
如何从文本中仅检索一个结果并同时满足两个条件?
答案 0 :(得分:0)
您不一定需要or,也可以Ref\.? ?([a-zA-Z. 0-9]+)
(请注意正则表达式末尾的空格,它将用作比赛的结尾。
import re
pattern = r"Ref\.? ?([a-zA-Z. 0-9]+) "
text_total = "Lore Ippsum Ref. 116519LN Perlmutt"
results = re.findall(pattern, text_total)
print(results[0])
答案 1 :(得分:0)
可以说,您的OR群组内的群组是“捕获群组”。您需要使用这些组内的<?php
$array = array_map("str_getcsv",preg_split('/\r*\n+|\r+/',file_get_contents("test.csv")));
?>
语法使它们无法捕获,并允许外部组保留为捕获组。
?:
请注意,如果有很多匹配项,您仍然可以得到多个匹配项。您可以将re.search用于第一个匹配项。