繁体   English   中英

正则表达式获取管道之间的第二和第三变量

[英]RegEx to get 2nd and 3rd variables between pipes

在此处输入图片描述 示例文本:

工程学| AB7407 | 007412665 | 杰基·布朗(Jackie Browne) 施工图

我需要2个RegEx。 在第一个管道AB7407之后,我可以给我第二个值,在第二个管道之后,第二个Redex可以给我第三个值007412665

我尝试了以下操作,但它给了我示例文本:

^(?<field1>[^|]+),(?<field2>[^|]+),(?<field3>[^|]+),(?<field4>[^|]+),(?<field5>[^|]+)$

结果:

工程学| AB7407 | 007412665 | 杰基·布朗(Jackie Browne) 施工图

任何人都可以建议我的Regex发生什么情况。

我会这样做:

 string original = "Engineering | AB7407 | 007412665 | Jackie Browne | Drawing for Construction";
 string[] split = original.Split('|');
 string firstcode = split[1];
 string secondcode = split[2];

如果要删除所有前导/尾随空格:

string secondcode = split[2].Trim();
Dim x = "Engineering | AB7407 | 007412665 | Jackie Browne | Drawing for Construction"
Dim parts = x.Split(" | ")

现在, parts(1)包含第二个字符串块, parts(2)包含第三个字符串。 这是VB,但是c#或您正在使用的任何方法都是相似的。

要修复您的正则表达式:

^(?<field1>[^|]+) \| (?<field2>[^|]+) \| (?<field3>[^|]+) \| (?<field4>[^|]+) \| (?<field5>[^|]+)$

如果您必须有2个正则表达式,

(?<=^[^|]+ \| )[^|]+

匹配第二个块,并且

(?<=^(?:[^|]+ \| ){2})[^|]+

匹配第三名。

正则表达式是错误的处理方式。 cut -f 2,3 -d '|' 在命令行上将提供您想要的内容。

任何编程语言都应具有字符串拆分功能,该功能将根据管道定界符将您的字符串转换为字符串数组。 用它代替正则表达式。

使用组

^(?<field1>.*?)\|(?<field2>.*?)\|(?<field3>.*?)\|(?<field4>.*?)\|(?<field5>.*?)$

名为field2field3组包含您的数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM