python正则表达式来获取第一个实例";目标=x";
我有一行python正则表达式来获取第一个实例";目标=x";,python,regex,Python,Regex,我有一行“blabla somehing something target=4,hjieei,target=8,abcd ef”,我想有一个python正则表达式来给我4的输出,它是第一个“target=”后面的数字 我尝试过re.search('.*target=([0-9.]+)',line),它总是给我8(而不是4)的值。 我试过下面的代码,但它也不起作用。 你能帮忙吗 line = "target = 4, hjieei, target = 8, abcd ef" while line:
“blabla somehing something target=4,hjieei,target=8,abcd ef”
,我想有一个python正则表达式来给我4的输出,它是第一个“target=”后面的数字
我尝试过re.search('.*target=([0-9.]+)',line)
,它总是给我8
(而不是4
)的值。
我试过下面的代码,但它也不起作用。
你能帮忙吗
line = "target = 4, hjieei, target = 8, abcd ef"
while line:
target_1 = re.search('/[^target = ([0-9.]+)]*/)', line)
if target_1 and target_1.groups():
print("found: ", target_1.group(1))'
break
目前,
*
正在贪婪地匹配所有内容,并最终为您提供找到的最后一个匹配项,即8
因此,您希望通过使用*?
,将正则表达式更改为非贪婪,从而从头开始匹配,然后它将为您返回第一个匹配项
import re
line = "blabla somehing something target = 4, hjieei, target = 8, abcd ef"
target_1 = re.match(r'.*?target = ([0-9.]+)', line)
print(target_1.group(1))
输出将是4
简单地说:
import re
data = "Batch size = 4, hjieei, Batch size = 8, abcd ef"
out = re.findall('\d', data)[0]
输出:
4
如果您确定字符串开头总是有
target=[number]
,则可以执行以下操作:
import re
txt = "target = 4, hjieei, target = 8, abcd ef"
number = re.findall(r'^target = (\d+)',txt)[0]
print(number) #prints 4
请注意原始字符串(
r
在'
之前)的用法,这样我就可以使用单个\
而无需对其进行转义,\d
相当于[0-9]
删除.*批大小=([0-9.]+)
谢谢Wiktor。在我发表文章之前,我已经尝试过重新搜索('Batch size=([0-9.]+),第行),它在我的实验环境(即我的本地pycharm IDE)上给了我4的值,但在我的实际服务器环境中,几个复杂的文件一起工作,什么都不会返回,所以我正在寻找一个更健壮的解决方案:)如果你需要一个真实的答案,发布真实的需求,一些具有预期输出的真实示例文本。因此不确定字符串是否以批处理大小开始?Wiktor的建议和我下面的答案适用于要求。根据答案,您需要提供更多示例以更好地阐明要求Hanks Wiktor,现在发布解决方案。是否re.findall('\d',data)[0]
查找第一位数字而不是数字?非常感谢Daweo,这很好,虽然它不适合我的代码的其他部分,但在其他一些情况下,它是有效的。@AndrewYang:现在我注意到您还允许在数字中使用点(
),为了考虑到这一点,我的findall
的第一个参数应该改为r'^Batch size=([\d.]+)