match_pro = r'\S:\s([0-9a-fA-F]{8}\s[0-9a-fA-F]{8}\s[0-9a-fA-F]{8}\s[0-9a-fA-F]{8})'正则匹配不上

时间: 2024-04-13 21:29:45 浏览: 118
对不起,我之前给出的正则表达式存在问题。如果您想要匹配格式为 `: 00000000 00000000 00000000 00000000` 的字符串,并提取其中的32位16进制数字部分,可以使用以下正则表达式: ```python import re pattern = r':\s([0-9A-Fa-f]{8}\s[0-9A-Fa-f]{8}\s[0-9A-Fa-f]{8}\s[0-9A-Fa-f]{8})' text = ": 00000000 00000000 00000000 00000000" matches = re.findall(pattern, text) if matches: print(matches[0]) ``` 这个正则表达式将匹配以冒号和空格开头的字符串,并提取其中的32位16进制数字部分。请确保在使用正则表达式时,输入的字符串与正则表达式的模式完全匹配,包括空格和冒号的位置。
相关问题

QRegExp rx("PRODUCT=([0-9a-fA-F]{1,4})/([0-9a-fA-F]{1,4})");

QRegExp是一个用于正则表达式的类,在Qt中常用于字符串模式匹配。这个特定的`QRegExp`实例`rx`是用来匹配一个特定的字符串格式,即"PRODUCT=xxxx/yyyy",其中`xxxx`和`yyyy`都是由1到4位的十六进制数字组成。这里的括号`(`和`)`是正则表达式中的分组,表示这两个部分将被视为独立的匹配单元。 `[0-9a-fA-F]`代表字符集,匹配从0到9,以及A到F(大小写均可)的十六进制数字。`{1,4}`则是量词,指定了前面的字符集合可以出现一次到四次。 例如,如果你有一个字符串"PRODUCT=1A2B/3C4D",使用这个正则表达式`rx`,它可以成功匹配"1A2B"和"3C4D"这两段。 要使用这个正则表达式,你可以创建一个新的`QRegEx`对象,并尝试在目标字符串上应用它,看是否能找到匹配: ```cpp QRegExp rx("PRODUCT=([0-9a-fA-F]{1,4})/([0-9a-fA-F]{1,4})"); QString str = "PRODUCT=1A2B/3C4D"; if (rx.exactMatch(str)) { QString productCode1 = rx.cap(1); // 第一个括号内的内容 QString productCode2 = rx.cap(2); // 第二个括号内的内容 // 进行后续操作... } ```

以下shell脚本是什么意思,转换成python是什么样的。ComNvmeDevNameInfoGet() { local slot_info="$1" local ret_file="$2" local ctrl_str="$3" local slot_id="" local slot_temp="" local slot_id_get="" local contrl_num="" local test_scene="" local ctrl_id=0 ls /dev/ | grep "nvme[0-9]\{1,\}" | grep -v "nvme[0-9]\{1,\}n" >nvme_info.txt slot_id=$(echo "${slot_info}" | sed 's/^0*//g') slot_id=$[slot_id+0] slot_id=$[slot_id-1] set +x while read contrl_num || [[ ! -z ${contrl_num} ]] do if [ "0" == "${ctrl_id}" ];then find /sys/devices -name "${contrl_num}" > ${contrl_num}_bus_info.txt else rm -f ${contrl_num}_bus_info.txt dos2unix ${contrl_num}_bus_info.txt fi #兼容服务器的PCIE链路 if grep -iw "FT2-MP1" /root/TestPlat/common/test_scene.ini ;then slot_temp=$(cat ${contrl_num}_bus_info.txt | awk -F / '{print $5}' | awk -F "." '{print $2}') else slot_temp=$(cat ${contrl_num}_bus_info.txt | awk -F "/" '{print $7}' | cut -b 9-10) fi slot_id_get=$[0x${slot_temp}+0] if [ "${slot_id_get}" = "${slot_id}" ];then set -x echo "${slot_id}:/dev/${contrl_num}:Ctrl${ctrl_id}" echo "/dev/${contrl_num}" >"${ret_file}" return 0 fi done < nvme_info.txt set -x echo "$(date +"%y-%m-%d %H:%M:%S") can not get nvme controller ctrl${ctrl_id} info,slot${slot_info}." | tee -a error.txt return 1

这个shell脚本的作用是根据输入的slot_info(slot id)来获取对应的NVMe控制器的设备名,并将其输出到指定的文件中。具体流程如下: 1. 将所有/dev/目录下的名字类似于“nvme[0-9]”但不包含“nvme[0-9]n”的文件名存储在nvme_info.txt文件中。 2. 将输入的slot_info转换为十进制,并减去1,得到slot_id。 3. 遍历nvme_info.txt中的每个文件名,获取其对应的控制器编号contrl_num。 4. 根据contrl_num在/sys/devices目录下查找对应的总线信息文件,并将其存储在contrl_num_bus_info.txt文件中。 5. 根据服务器型号的不同,从contrl_num_bus_info.txt中提取出对应的PCIe插槽编号slot_temp。 6. 将slot_temp转换为十进制,得到slot_id_get。 7. 如果slot_id_get与slot_id相等,则将控制器设备名输出到ret_file文件中,并返回0表示成功。 8. 如果遍历完所有的文件名仍然没有找到对应的控制器设备名,则将错误信息输出到error.txt文件中,并返回1表示失败。 将其转换成Python代码大致如下: ```python import os import re import datetime def ComNvmeDevNameInfoGet(slot_info, ret_file, ctrl_str): with open("nvme_info.txt", "w") as f: for file in os.listdir("/dev/"): if re.match("nvme[0-9]+", file) and not re.match("nvme[0-9]+n", file): f.write(file + "\n") slot_id = int(slot_info.lstrip("0")) slot_id -= 1 ctrl_id = 0 with open("nvme_info.txt", "r") as f: for contrl_num in f: contrl_num = contrl_num.strip() if ctrl_id == 0: with open(f"/sys/devices/*/pci*/{contrl_num}/", "w") as bus_info_file: bus_info_file.write(contrl_num) else: os.remove(f"{contrl_num}_bus_info.txt") os.system(f"dos2unix {contrl_num}_bus_info.txt") if "FT2-MP1" in open("/root/TestPlat/common/test_scene.ini").read(): with open(f"{contrl_num}_bus_info.txt", "r") as bus_info_file: slot_temp = re.search(r"/pci([0-9a-fA-F]{2}).*/", bus_info_file.read()).group(1) else: with open(f"{contrl_num}_bus_info.txt", "r") as bus_info_file: slot_temp = re.search(r"/pci.*/(.*):.*", bus_info_file.read()).group(1)[8:10] slot_id_get = int(slot_temp, 16) if slot_id_get == slot_id: with open(ret_file, "w") as ret_file: ret_file.write(f"/dev/{contrl_num}") return f"{slot_id}:/dev/{contrl_num}:Ctrl{ctrl_id}" ctrl_id += 1 with open("error.txt", "a") as error_file: error_file.write(f"{datetime.datetime.now().strftime('%y-%m-%d %H:%M:%S')} can not get nvme controller ctrl{ctrl_id} info,slot{slot_info}.\n") return 1 ```

相关推荐

用python写一个函数读取二进制文件,二进制文件第一行是版本信息 等号左边是描述,右边是值 后面的头信息以{开始,最后一个}结束 注意头信息里面也有{} 头信息里面的参数都是等号左边是描述,右边是值,值的最后以;结束 头信息的参数可多可少 下面是文件头信息示例 vbf_version = 2.6; header { // Created by VbfSign build: 2017/12/12 on 2020/10/19 9:54 sw_part_number = "8891903679"; sw_version = "A"; sw_part_type = SBL; data_format_identifier = 0x10; ecu_address = 0x1A31; file_checksum = 0x0D81F89D; call = 0x1FFF8004; verification_block_start = 0x20000800; verification_block_length = 0x00000054; verification_block_root_hash = 0x3C440B332BE20F05B9C108F347658FBEBEAA4B3E0D655CAEE76AE210E93E828A; sw_signature_dev = 0x8A97CF400B82AB1B0D82C26976CB26F7AE6B34A87E56675D39E52B9C811F1AB9C040B52FA925BB60E981F388A748F0E09B20D2CBEF7A9A49119EC68C1EFE83BD0EA34B0FDE59F16B8533FEE72219D698C898F4D9EB40B9FCE42C73C028519D1767C11AEEBF0FE746B2F8AB601DA7E3686E4B46AC05851FCDD7A55CBF5F72DA826B0152640514F87CE905362CBFA7F19FE04CAA84A2882E20592E2000D576F629A1B05A207FB59DDC6E8DD10154F148AACA7CBBD5E978BF9E67EDC1ADD186E098A81FEF3C657D2AEFC083F25D307DE00715AB8B2C78CDB23CD13B3DAD9110333ADAB672F1EC6B6D5CFCAF04FC71490A54ECE1745E46D4AB3A9D1E0BA0CACE0B92; sw_signature = 0x12FBA8C1BCB608E5ADC31E1AC73292E5EB7DE42813F6F403DE17A1436766A43BBB78387019BBAF910B86F98214278093889EBB8E9CCC24C4A659F6C5FA3C9F1B794C88544C36235739686474454253AFD99020193B86EBD6FB6CD190B723ECF73CAA3C35F65C82A9E0BEFC94711FBBAD428DD77276B2933508A086720B934EA0691A49D0510C1F107448BCF3FA9378057628280A0E49FE3F196F925E31D1234ECF759911F05274DC6291FF5AFF2EF6CB7039062314559F799D1CB5E82902D10B20755E45F23F397EA335098A8E87002D681D8A400E4AC56CEBC9E2BBA9023B311361A5432A321CB588C1BF691898DA6486A3088E5AD93A3A1DB99461E5A75825; }

最新推荐

recommend-type

【CSS Tricks】像素风字体、图片

包含像素风中英文字体,鼠标手势普通状态、点击状态和禁用状态,仅用作技术分享学习研究,不可用于其他用途。
recommend-type

卡瓦牙椅E50life中文使用说明书第一部分.pdf

卡瓦牙椅E50life中文使用说明书第一部分.pdf
recommend-type

ChromiumSetup.exe

ChromiumSetup.exe
recommend-type

Chain of thought 链式思考赋能Transformer模型解决串行计算难题

Chain of thought(CoT)使Transformer能够执行串行计算,扩展了它们解决问题的能力,超越了仅限并行的局限性。 增强Transformer的表达能力,特别是对于本质上是顺序问题。 原始问题: 大型语言模型(LLMs)在生成最终答案之前生成中间步骤(连续思考,CoT)时,展现出异常的推理能力。CoT有效性背后的机制尚不清楚,尤其是在zero shot和错误推理场景中。   本文的关键见解: • 在没有CoT的情况下,具有有限精度和多项式(n)嵌入大小的恒定深度Transformer只能解决AC0中的问题 • 通过T步骤的CoT,使用恒定位精度和O(log n)嵌入大小的恒定深度Transformer可以解决任何由大小为T的布尔电路可解决的问题 • CoT大幅提高了低深度Transformer在本质上是串行问题上的准确性   本文的解决方案: • 为通过如下特性解决问题的恒定深度Transformer定义了新的复杂性类CoT[T(n), d(n), s(n), e(n)]: T(n) CoT步骤 d(n) 嵌入大小 s(n) 精度位 e(n) 指数位
recommend-type

7a3b55460m422ea155d8f9aaa897e1dc(1).jsp

7a3b55460m422ea155d8f9aaa897e1dc(1).jsp
recommend-type

李兴华Java基础教程:从入门到精通

"MLDN 李兴华 java 基础笔记" 这篇笔记主要涵盖了Java的基础知识,由知名讲师李兴华讲解。Java是一门广泛使用的编程语言,它的起源可以追溯到1991年的Green项目,最初命名为Oak,后来发展为Java,并在1995年推出了第一个版本JAVA1.0。随着时间的推移,Java经历了多次更新,如JDK1.2,以及在2005年的J2SE、J2ME、J2EE的命名变更。 Java的核心特性包括其面向对象的编程范式,这使得程序员能够以类和对象的方式来模拟现实世界中的实体和行为。此外,Java的另一个显著特点是其跨平台能力,即“一次编写,到处运行”,这得益于Java虚拟机(JVM)。JVM允许Java代码在任何安装了相应JVM的平台上运行,无需重新编译。Java的简单性和易读性也是它广受欢迎的原因之一。 JDK(Java Development Kit)是Java开发环境的基础,包含了编译器、调试器和其他工具,使得开发者能够编写、编译和运行Java程序。在学习Java基础时,首先要理解并配置JDK环境。笔记强调了实践的重要性,指出学习Java不仅需要理解基本语法和结构,还需要通过实际编写代码来培养面向对象的思维模式。 面向对象编程(OOP)是Java的核心,包括封装、继承和多态等概念。封装使得数据和操作数据的方法结合在一起,保护数据不被外部随意访问;继承允许创建新的类来扩展已存在的类,实现代码重用;多态则允许不同类型的对象对同一消息作出不同的响应,增强了程序的灵活性。 Java的基础部分包括但不限于变量、数据类型、控制结构(如条件语句和循环)、方法定义和调用、数组、类和对象的创建等。这些基础知识构成了编写任何Java程序的基础。 此外,笔记还提到了Java在早期的互联网应用中的角色,如通过HotJava浏览器技术展示Java applet,以及随着技术发展衍生出的J2SE(Java Standard Edition)、J2ME(Java Micro Edition)和J2EE(Java Enterprise Edition)这三个平台,分别针对桌面应用、移动设备和企业级服务器应用。 学习Java的过程中,不仅要掌握语法,还要理解其背后的设计哲学,形成将现实生活问题转化为计算机语言的习惯。通过不断地实践和思考,才能真正掌握Java的精髓,成为一个熟练的Java开发者。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

Parallelization Techniques for Matlab Autocorrelation Function: Enhancing Efficiency in Big Data Analysis

# 1. Introduction to Matlab Autocorrelation Function The autocorrelation function is a vital analytical tool in time-domain signal processing, capable of measuring the similarity of a signal with itself at varying time lags. In Matlab, the autocorrelation function can be calculated using the `xcorr
recommend-type

尝试使用 Python 实现灰度图像的反色运算。反色运 算的基本公式为 T(x,y)=255-S(x,y)。其中,T 代表反色后 的图像,S 代表原始图像

在Python中,我们可以使用PIL库来处理图像,包括进行灰度图像的反色操作。首先,你需要安装Pillow库,如果还没有安装可以使用`pip install pillow`命令。 下面是一个简单的函数,它接受一个灰度图像作为输入,然后通过公式T(x, y) = 255 - S(x, y)计算每个像素点的反色值: ```python from PIL import Image def invert_grayscale_image(image_path): # 打开灰度图像 img = Image.open(image_path).convert('L')
recommend-type

U盘与硬盘启动安装教程:从菜鸟到专家

"本教程详细介绍了如何使用U盘和硬盘作为启动安装工具,特别适合初学者。" 在计算机领域,有时候我们需要在没有操作系统或者系统出现问题的情况下重新安装系统。这时,U盘或硬盘启动安装工具就显得尤为重要。本文将详细介绍如何制作U盘启动盘以及硬盘启动的相关知识。 首先,我们来谈谈U盘启动的制作过程。这个过程通常分为几个步骤: 1. **格式化U盘**:这是制作U盘启动盘的第一步,目的是清除U盘内的所有数据并为其准备新的存储结构。你可以选择快速格式化,这会更快地完成操作,但请注意这将永久删除U盘上的所有信息。 2. **使用启动工具**:这里推荐使用unetbootin工具。在启动unetbootin时,你需要指定要加载的ISO镜像文件。ISO文件是光盘的镜像,包含了完整的操作系统安装信息。如果你没有ISO文件,可以使用UltraISO软件将实际的光盘转换为ISO文件。 3. **制作启动盘**:在unetbootin中选择正确的ISO文件后,点击开始制作。这个过程可能需要一些时间,完成后U盘就已经变成了一个可启动的设备。 4. **配置启动文件**:为了确保电脑启动后显示简体中文版的Linux,你需要将syslinux.cfg配置文件覆盖到U盘的根目录下。这样,当电脑从U盘启动时,会直接进入中文界面。 接下来,我们讨论一下光盘ISO文件的制作。如果你手头有物理光盘,但需要将其转换为ISO文件,可以使用UltraISO软件的以下步骤: 1. **启动UltraISO**:打开软件,找到“工具”菜单,选择“制作光盘映像文件”。 2. **选择源光盘**:在CD-ROM选项中,选择包含你想要制作成ISO文件的光盘的光驱。 3. **设定输出信息**:确定ISO文件的保存位置和文件名,这将是你的光盘镜像文件。 4. **开始制作**:点击“制作”,软件会读取光盘内容并生成ISO文件,等待制作完成。 通过以上步骤,你就能成功制作出U盘启动盘和光盘ISO文件,从而能够灵活地进行系统的安装或修复。如果你在操作过程中遇到问题,也可以访问提供的淘宝小店进行交流和寻求帮助。 U盘和硬盘启动安装工具是计算机维护和系统重装的重要工具,了解并掌握其制作方法对于任何级别的用户来说都是非常有益的。随着技术的发展,U盘启动盘由于其便携性和高效性,已经成为了现代装机和应急恢复的首选工具。