【发布时间】:2023-03-17 22:14:02
【问题描述】:
我想解决一个问题:
对于可以是以下任何变体的文本字符串,我应该采取哪些步骤来提取我需要的信息?
- P09876-01-TP02-005-L-1087-315-802-105-99
- P09876-01-TP02-005-L-1087-315-802-105
- P09876-01-TP02-005-L-1087-315-802
- P09876-01-TP02-005-L-1087-315
- P09876-01-TP02-005-L-1087
我需要返回字符串 -L- 部分右侧的值。
我已经有了以下模式:
(\w{1}\d{5,}-\d{1,}-\w{2,}\d{2,}-\d{3,}-\w-)(\d{1,})-(\d{1,})-(\d{1,})-(\d{1,})-(\d{1,})|(\w{1}\d{5,}-\d{1,}-\w{2,}\d{2,}-\d{3,}-\w-)(\d{1,})-(\d{1,})-(\d{1,})-(\d{1,})|(\w{1}\d{5,}-\d{1,}-\w{2,}\d{2,}-\d{3,}-\w-)(\d{1,})-(\d{1,})-(\d{1,})|(\w{1}\d{5,}-\d{1,}-\w{2,}\d{2,}-\d{3,}-\w-)(\d{1,})-(\d{1,})|(\w{1}\d{5,}-\d{1,}-\w{2,}\d{2,}-\d{3,}-\w-)(\d{1,})
在我输入时考虑一下,我是否可以简单地检查上述模式返回的组号,然后将这些组值视为group(1), group(2), group(n) 等?
【问题讨论】:
-
这些是单独的字符串,对吧?并且您拥有的正则表达式将它们全部“吃掉”为 1 个字符串。您是否只需要
-L-(.*)并获得第 1 组值? -
您是否还需要在大文本或字符串列表中找到与任何这些模式匹配的字符串?或者您处理的所有字符串都匹配其中一种格式,而您只需要识别这些片段?
-
{1}是多余的,可以去掉;它只会弄乱regex;{1,}与+相同(如果您使用的语言或工具支持);改用+使regex更具可读性 -
你在哪里使用正则表达式?工具/编程语言是什么?
-
@stribizhev:VB.NET 是语言,Visual Studio Express 2015 是 IDE - 是的,它们是单独的字符串。
标签: .net regex vb.net pattern-matching