如何使用正则表达式捕获多个模式?
How to capture a multiple patterns using regex?
我有几个包含错误值的文本文件。每个文件中的值都不同,因此我无法获得值所在的确切行。
示例如下:
v1 = 1111
v2 = A:10 B:2
正文:
12.10.08,11:12:39,183769 1111,10352,003,12,11:12:39,183 Syntax-->12345
(想要捕获 v1)
01.01.02,06:10:56,243648 00488,00000,018,01,06:10:56,243 A:10 B:2--1212 (would like to capture v2)
正则表达式如下:
((\d{2}[.]\d{2}[.]\d{2}),(\d{2}[:]\d{2}[:]\d{2},\d*\s*(('+v1+')[,].*|\S*\s('+v2+')).*))
无论传递什么值,都应该通过文本获取值。如果存在 v1,则应提供完整的文本,如果存在 v2,则应提供完整的文本。
但是只有一个正则表达式。
您可能会使用:
\d{2}\.\d{2}\.\d{2},\d{2}:\d{2}:\d{2},\d{6}(?: \d{5}(?:,\d+)+:\d{2}:\d{2},\d+)? (\d{4}\b|[A-Z]:\d{2} [A-Z]:\d)
说明
\d{2}\.\d{2}\.\d{2},\d{2}:\d{2}:\d{2},\d{6}
匹配首位格式
(?: \d{5}(?:,\d+)+:\d{2}:\d{2},\d+)?
可选择匹配以 5 位数字开头的部分,直到格式
(
捕获组
\d{4}\b
匹配4位数字
|
或
[A-Z]:\d{2} [A-Z]:\d
匹配 A:10 B:
格式
)
关闭群组
我有几个包含错误值的文本文件。每个文件中的值都不同,因此我无法获得值所在的确切行。
示例如下:
v1 = 1111
v2 = A:10 B:2
正文:
12.10.08,11:12:39,183769 1111,10352,003,12,11:12:39,183 Syntax-->12345
(想要捕获 v1)
01.01.02,06:10:56,243648 00488,00000,018,01,06:10:56,243 A:10 B:2--1212 (would like to capture v2)
正则表达式如下:
((\d{2}[.]\d{2}[.]\d{2}),(\d{2}[:]\d{2}[:]\d{2},\d*\s*(('+v1+')[,].*|\S*\s('+v2+')).*))
无论传递什么值,都应该通过文本获取值。如果存在 v1,则应提供完整的文本,如果存在 v2,则应提供完整的文本。 但是只有一个正则表达式。
您可能会使用:
\d{2}\.\d{2}\.\d{2},\d{2}:\d{2}:\d{2},\d{6}(?: \d{5}(?:,\d+)+:\d{2}:\d{2},\d+)? (\d{4}\b|[A-Z]:\d{2} [A-Z]:\d)
说明
\d{2}\.\d{2}\.\d{2},\d{2}:\d{2}:\d{2},\d{6}
匹配首位格式(?: \d{5}(?:,\d+)+:\d{2}:\d{2},\d+)?
可选择匹配以 5 位数字开头的部分,直到格式(
捕获组\d{4}\b
匹配4位数字|
或[A-Z]:\d{2} [A-Z]:\d
匹配A:10 B:
格式
)
关闭群组