Regex 序列号的正则表达式
我有一个很长的有效载荷,我需要从中返回一个序列号,但是它有很多序列号,我只想在某个标签之后返回序列号。这是有效载荷:Regex 序列号的正则表达式,regex,nsregularexpression,Regex,Nsregularexpression,我有一个很长的有效载荷,我需要从中返回一个序列号,但是它有很多序列号,我只想在某个标签之后返回序列号。这是有效载荷: USB: USB 2.0 SuperSpeed Bus: Host Controller Location: Building Internal Card Reader: Product ID: 0x8406 Serial Number: 000000000820 //i dont want this Building: Y
USB:
USB 2.0 SuperSpeed Bus:
Host Controller Location: Building
Internal Card Reader:
Product ID: 0x8406
Serial Number: 000000000820 //i dont want this
Building: Yes
USB 2.0 Bus:
PCI ID: 0x8c31
iPhone:
Vendor ID: 0x05ac (skyway Inc.)
Version: 7.02
Serial Number: wea0aa752ada7722ac92575e98z2e89c691f4282 //i want this
Speed: Up to 492 Mb/sec
REC ID: 0x11100000 / 1
skyway Internal Keyboard / Trackpad:
Product ID: 0x0162
Recog ID: 0x05ac (skyway Inc.)
Location ID: 0x14c00000 / 3
Current Available (mA): 500
Built-In: Yes
如何构建只返回以下内容的正则表达式:
wea0aa752ada7722ac92575e98z2e89c691f4282
我尝试执行以下操作,但这将返回以序列号开头的所有表达式:
Serial Number: [0-9]
我只想要iPhone标题后面显示的序列号 使用捕获组
"(?s)\\biPhone:\\n\\n+(?:(?!\\n\\n).)+\\bSerial Number: (\\w+)"
试试这个,抓住第一组,看演示
请注意,他想要在“iPhone”之后的序列号,我正在尝试,但它不起作用。如果你去我在rubular.com未定义的组选项中得到这个错误,它对你有用吗。rubular是专为ruby创建的,它不支持s修饰符。在这种情况下,您可以使用
\biPhone:\n\n+(?:(?!\n\n)[\s\s])+?\b序列号:(\w+)
awesome,但是仍然可以从正则表达式本身获取第一个组。@j2emanue只有一个组存在。。对此语言不太了解:(@vks不需要为什么?(?:(?!\\n\\n)。)+
声明中间不存在任何空行。但在这种情况下,您的失败。因此,这将匹配iphone旁边段落中的字符串序列号
。@AvinashRaj它根本不是必需的……OP只需要iphone后面的序列号……对其进行数据处理……您正在使其过度复杂化奥马特对我来说似乎很固定
\\biPhone:[\\s\\S]*?\\bSerial Number: (\\w+)
for (NSTextCheckingResult *match in matches) {
//NSRange matchRange = [match range];
NSRange matchRange = [match rangeAtIndex:1];
NSString *matchString = [htmlString substringWithRange:matchRange];
NSLog(@"%@", matchString);
}